1

Pour des raisons héritées, je gère un projet de site Web pour lequel je souhaite fournir une documentation à jour à partir des commentaires de la documentation XML. Je comprends que je peux le faire en peaufinant la section <compilers> en web.config. Je suis finalement arrivé ce point:Projet de site Web: vouloir générer de la documentation XML sur la construction

<system.codedom> 
    <compilers> 
     <compiler 
     language="c#;cs;csharp" 
     extension=".cs" 
     type="Microsoft.CSharp.CSharpCodeProvider" 
     compilerOptions="/optimize /doc:C:\temp\my-output-here.xml" 
     warningLevel="1" /> 
    </compilers> 
    </system.codedom> 

Maintenant, quand je lance le site Web avec (et donc invoque la compilation juste à temps), je reçois un fichier XML à l'emplacement demandé mais il est minime:

<?xml version="1.0"?> 
<doc> 
    <assembly> 
     <name>App_global.asax.abqhzva4</name> 
    </assembly> 
    <members> 
    </members> 
</doc> 

Il semble que la balise <compiler> ne fasse pas ce que je veux. Il doit générer du XML pour le dossier du projet lui-même plutôt que les fichiers .cs, ou il est écrasé avec chaque unité de compilation et je ne vois que le dernier trivial, ou ... Je ne sais pas. Je ne suis pas sûr. Cette étiquette de configuration n'est pas bien documentée. En bref, je cherche un moyen d'obtenir de la documentation XML pour tous les fichiers .cs dans ce projet de site Web. Ce n'est pas grave si tout est dans un fichier, dans des fichiers séparés, ou même dans la mémoire au moment de l'exécution.

Je suis aware of the prior question à ce sujet, mais le lien fourni a été redirigé vers le site Sandcastle. C'est génial, mais c'est beaucoup plus que ce que je vais utiliser sur ce projet. Obtenir simplement de la documentation XML au moment de la construction ou de l'exécution est tout ce qui est nécessaire.

Ma question est alors: Que dois-je faire pour obtenir l'entrée de configuration <compiler> pour générer des documents XML pour un projet de site Web?

Répondre

1

J'ai une solution de contournement moche aussi bien ... Mais voilà!

1. Téléchargez la dernière Sandcastle Installer à partir de cette page - https://github.com/EWSoftware/SHFB/releases

2. Décompressez et exécutez le programme d'installation

3. Copier EWSoftware.CodeDom.dll dans le répertoire \bin de votre site Web. L'emplacement par défaut de ce fichier est - C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Extras\EWSoftware.CodeDom.dll

4. Modifier web.config comme suit:

<configuration> 
    <system.codedom> 
    <compilers> 
     <compiler language="c#;cs;csharp" extension=".cs" 
     compilerOptions="/docpath:C:\Publish\Docs" 
     type="EWSoftware.CodeDom.CSharpCodeProviderWithDocs, EWSoftware.CodeDom" 
     > 
     <!-- NOTE: Change version value as needed (v3.5, v4.0, etc.) --> 
     <providerOption name="CompilerVersion" value="v4.0"/> 
     </compiler> 
    </compilers> 
    </system.codedom> 
</configuration> 

Source: http://ewsoftware.github.io/EWSoftwareCodeDom/html/40ba6bda-95d6-4a64-834f-f7cedcb589d1.htm

5. Reconstruire votre solution et le tour est joué! Le dossier spécifié avec l'option /docpath contiendra votre documentation XML.

+0

J'aime ça! Bien sûr, cela signifie installer tout Sandcastle, mais le résultat est très peu d'entretien. Bon. – catfood

+1

Merci :). J'ai l'impression que chaque répertoire est construit avec un nouvel appel à csc.exe. En utilisant votre technique d'origine, chaque fichier est construit, le fichier XML de sortie écrase le fichier XML du dossier précédent. Tout ce que vous voyez est le fichier XML du dernier dossier qui a été compilé. D'où la nécessité pour le compilateur Sandcastle, qui donne à chaque dossier un fichier XML unique nommé. – dana

+1

Ou peut-être un appel à csc.exe est-il fait pour chaque fichier? Le point étant que si plusieurs appels sont faits, vous avez besoin d'un moyen de spécifier un fichier XML de destination pour chaque appel. – dana