80 votes

Comment empêcher la copie des fichiers de documentation XML dans un build en mode release ?

J'ai un projet Visual Studio 2010 qui fait référence à des composants tiers. Leurs assemblages sont accompagnés de fichiers de documentation XML, qui sont utiles pour nous (et seulement nous) développeurs. Et chaque fois que le projet est construit (en mode Debug ou Release), ces fichiers XML sont copiés dans le répertoire de construction.

Je n'arrive pas à trouver un paramètre ou un commutateur pour désactiver la copie de ces fichiers XML dans le répertoire de construction, que ce soit dans Visual Studio ou via MSBuild. Un script post-build peut être une option, mais une option malodorante. Des idées ? Merci.

111voto

Sayed Ibrahim Hashimi Points 25707

Lorsque vous construisez un projet, les fichiers .xml/.pdb sont rassemblés par la tâche ResolveAssemblyReference. Lorsque ResolveAssemblyReference est appelée, on lui transmet une liste d'extensions de fichier pour les fichiers associés. Cette liste d'extensions de fichiers est capturée dans la propriété MSBuild AllowedReferenceRelatedFileExtensions . Par défaut, cette liste contiendra ".pdb ;.xml".

Si vous voulez exclure tous les fichiers de référence liés de la collecte, il suffit de remplacer la valeur de la propriété par quelque chose dont les fichiers liés n'auront pas les extensions. Par exemple, vous pouvez définir AllowedReferenceRelatedFileExtensions à "-".

Vous pouvez également personnaliser la liste des fichiers qui sont renvoyés par ce système. Si vous ne voulez trouver que les fichiers .pdb, vous devrez passer dans le champ AllowedReferenceRelatedFileExtensions=".pdb" . Dans ce cas, toutes les références qui ont un fichier .pdb à côté du .dll/.exe seront également copiées. Vous pouvez également utiliser cette fonction pour copier d'autres fichiers connexes qui ne se terminent pas nécessairement par .pdb/.xml. Par exemple, si vous avez une assemblée référencée nommée MyAssembly.dll et que dans le même dossier il existe MyAssembly.pdb et MyAssembly.foo, si vous définissez AllowedReferenceRelatedFileExtensions=".pdb;.foo" alors les fichiers .pdb et .foo seront copiés dans le répertoire de sortie.

0voto

Alex Points 1323

Le fichier projet de Visual Studio a le même format que n'importe quel fichier msbuild. Vous pouvez donc ajouter manuellement la condition dans la section correspondante pour ne pas copier vos fichiers xml si le nom de la configuration est 'Release'.

Il devrait changer

<ItemGroup>

à

<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">

ou quelque chose comme ça.

-4voto

Marc Gravell Points 482669

Si les .xml/.pdb sont marqués comme action de construction "Content" (etc), vous pouvez les changer en "None". Vous devez également vous assurer que le copy-to-build-output est faux .

Les deux sont réglés ?

-4voto

Russell McClure Points 2704

Quel problème y a-t-il à ce que les fichiers XML soient copiés dans le dossier lors des constructions de versions ? Il me semble que c'est une bonne chose et que le vrai problème se situe au niveau du code qui récupère les fichiers pour les placer dans l'installateur. Récupération des dll de tiers dans votre propre corbeille \release dossier n'est pas une bonne pratique à mon avis. Je demanderais à mon installateur de récupérer les dll de tiers dans leur propre dossier dans mon arbre des sources.

-5voto

codegecko Points 1380

Le paramètre se trouve dans les propriétés du projet en question, sous l'onglet "Build", décochez "Fichier de documentation XML". C'est aussi une propriété MSBuild appelée <DocumentationFile> en vertu de la loi applicable <PropertyGroup> pour votre configuration de construction dans le fichier .*proj.

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