43 votes

Quelles règles sont appliquées au dossier de sortie de IntelliSenseComponent de SHFB?

Noda Temps a un problème à l'encontre de ce que la fichier de documentation XML il est livré contient tous les membres internes et privés trop - ce qui est une honte.

Heureusement, Sandcastle Help File Builder a une version personnalisée de la composante - IntelliSenseComponent - ce qui fait exactement la bonne chose... en théorie. Malheureusement, je ne peux pas savoir comment sur terre pour le configurer correctement.

La documentation donne cet exemple:

 <output includeNamespaces="false" namespacesFile="Namespaces"
   folder="{@OutputFolder}" />

et les états:

L'exemple donné ci-dessus est tirée de la Sandcastle Help File Builder, le fichier de configuration. Lorsqu'il est utilisé avec elle, le remplacement des balises {@SHFBFolder} et {@OutputFolder} sont utilisés pour insérer le fichier d'aide du générateur d'un dossier et le dossier de sortie du projet dans les chemins d'accès aux fichiers. Ceux-ci sont remplacés au moment de la construction avec les valeurs appropriées. Si vous utilisez le composant dans vos propres scripts, remplacer les balises avec un chemin relatif ou absolu vers le composant de l'assemblée et le dossier de sortie, respectivement.

Eh bien, je suis en utilisant SHFB, donc je m'attends à ça. Cependant, je ne peux pas obtenir quelque chose d'autre qu'un chemin d'accès absolu au travail. J'ai essayé:

folder="."
folder="{@OutputFolder}"
folder="{@OutputFolder}XYZZY"
folder="{@OutputFolder}\XYZZY"
folder="{@OutputFolder}/XYZZY"
folder="{@OutputFolder}/XYZZY/"

(Je suis juste en utilisant XYZZY comme quelque chose qui est facile à trouver.)

En regardant le code source, j'avais espéré que je pourrais utiliser une variable d'environnement, mais cela n'a pas fonctionné:

folder="%CD%\XYZZY"

bien que cela n'...

folder="%USERPROFILE%\XYZZY"

Ceci fonctionne:

folder="c:\users\jon\test\xyzzy"

... mais je ne veux vraiment pas un chemin d'accès absolu-nom.

La documentation suggère que tout cela doit être vraiment facile... ce qui me manque?

Les Versions concernées sont:

  • SHFB: 1.9.3.0
  • Château de sable: 2.6.10621.1

44voto

Igor Korkhov Points 4460

Mes expériences ont montré que SHFB de IntelliSenseComponent ne traitent {@OutputFolder} correctement, mais il y a une nuance.

Si l' folder de l'attribut spécifié dans

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="..." />

pointe vers un dossier à l'intérieur d'un projet OutputPath le dossier (.\docs\api dans votre cas) puis SHFB du processus de construction crée le dossier, mais supprime ensuite il avant de générer les contenus du site web:

Last step completed in 00:00:34.5875
-------------------------------
Combining conceptual and API intermediate TOC files...

Clearing any prior web output
    Last step completed in 00:00:00.2360
-------------------------------
Extracting HTML info for HTML Help 1 and/or website...

Le problème est que la valeur par défaut de l' {@OutputFolder} est exactement la même que la valeur de $(OutputPath), donc si vous mettez quelque chose comme {@OutputFolder}\foo dans la folder d'attribut, alors vous ne verrez jamais foo après la construction est terminée.

La solution est simple: spécifiez un dossier qui se trouve à l'extérieur de votre dossier de sortie du projet, comme ceci:

<output includeNamespaces="false" namespacesFile="Namespaces"
        folder="{@OutputFolder}\..\distilledApi" />
<!--                            ^^       -->

Espérons que cette aide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X