Question

J'ai un Visual Studio 2008 C # /. NET 3.5 projet avec une tâche de post de construction pour le contenu ZIP. Cependant je trouve que je suis également obtenir les fichiers référencés ensembles de la pdb (débogage) et .xml (documentation) dans mon répertoire de sortie (et ZIP).

Par exemple, si les références MyProject.csproj YourAssembly.dll et il y a des fichiers YourAssembly.xml et YourAssembly.pdb dans le même répertoire que la DLL ils apparaissent dans mon répertoire de sortie (et ZIP).

Je peux exclure * pdb quand ZIP'ing mais je ne peux pas exclure une couverture les fichiers * .xml que j'ai des fichiers de déploiement avec la même extension.

Y at-il un moyen d'empêcher le projet de copie de fichiers PDB et XML assembly référencé?

Était-ce utile?

La solution

Vous pouvez également spécifier via la ligne de commande:

MsBuild.exe build.file /p:AllowedReferenceRelatedFileExtensions=none

Autres conseils

Je voulais être en mesure d'ajouter et de supprimer des ensembles référencés dans ma demande principale tout en évitant la nécessité de maintenir les fichiers que je devais supprimer ou exclure.

Je perçai Microsoft.Common.targets à la recherche de quelque chose qui fonctionnerait et a trouvé la propriété AllowedReferenceRelatedFileExtensions. Sa valeur par défaut .pdb; .xml donc je explicitement défini dans mon dossier de projet. Le hic est que vous avez besoin quelque chose (les espaces ne suffit pas) sinon il continuera d'utiliser la valeur par défaut.

<Project ...>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <AllowedReferenceRelatedFileExtensions>
      <!-- Prevent default XML and PDB files copied to output in RELEASE. 
           Only *.allowedextension files will be included, which doesn't exist in my case.
       -->
      .allowedextension
    </AllowedReferenceRelatedFileExtensions> 
  </PropertyGroup>

Vous pouvez ajouter un message Créer commande d'événement similaire à del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"

Ceci est une question assez ancienne, mais comme il n'y a pas de réponse sur la façon de désactiver la génération de fichiers PDB et XML via l'interface utilisateur, je me suis dit qu'il devrait être ici pour être complet.

Dans Visual Studio 2013: dans les propriétés du projet, sous l'onglet décompiler, décochez la case « Générer le fichier de documentation XML », puis cliquez sur « Options avancées de compilation » ci-dessous et que vous changez « Générer les informations de débogage » à « None », et qui ne l'astuce.

Ma réponse est peut-être trivial maintenant, mais je voudrais partager le script BAT j'utiliser pour supprimer les fichiers xml s'il y a un dll correspondant pour elle. Il est utile si vous voulez juste pour nettoyer le dossier de sortie et a d'autres fichiers xml qui ne veulent pas supprimer.

SETLOCAL EnableDelayedExpansion

SET targetDir=%1

ECHO Deleting unnecessary XML files for dlls

FOR %%F IN (%targetDir%*.xml) DO (

  SET xmlPath=%%~fF
  SET dllPath=!xmlPath:.xml=.dll!

  IF EXIST "!dllPath!" (
    ECHO Deleting "!xmlPath!"
    DEL "!xmlPath!"
  )
)

Utilisation:

Cleanup.bat c:\my-output-folder\

Il m'a fallu une heure pour terminer ce travail simple, (grâce à la substance « d'expansion retardée ») avec tout type de recherche ici et là. Il aide à d'autres l'espoir newbies BAT comme moi.

Je n'ai pas eu beaucoup de chance avec les autres réponses, j'ai finalement compris comment faire cela dans ma mise en œuvre en utilisant le construit dans "supprimer" commande , apparemment, il y a une manière spécifique dont vous avez besoin mettre en œuvre des jokers , il est peu nuancées , voici tout ce que vous devez mettre dans votre "csproj"( TargetDir est intégré dans la variable, automatiquement inclus) sous l'étiquette "projet":

<Target Name="RemoveFilesAfterBuild">   
    <ItemGroup>
        <XMLFilesToDelete Include="$(TargetDir)\*.xml"/>
        <PDBFilesToDelete Include="$(TargetDir)\*.pdb"/>
    </ItemGroup>
    <Delete Files="@(XMLFilesToDelete)" />
    <Delete Files="@(PDBFilesToDelete)" />
</Target>

J'ai aussi eu des problèmes avec divers dossiers spécifiques de langue généré, si vous avez cette question aussi, vous pouvez également supprimer des dossiers spécifiques de langue utilisé aussi. J'ai choisi de ne déclencher ce sous le type de construction « Release »:

<ItemGroup>
    <FluentValidationExcludedCultures Include="be;cs;cs-CZ;da;de;es;fa;fi;fr;ja;it;ko;mk;nl;pl;pt;ru;sv;tr;uk;zh-CN;zh-CHS;zh-CHT">
        <InProject>false</InProject>
    </FluentValidationExcludedCultures> 
</ItemGroup>

<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />

    <ItemGroup>
        <XMLFilesToDelete Include="$(TargetDir)\*.xml"/>
        <PDBFilesToDelete Include="$(TargetDir)\*.pdb"/>
    </ItemGroup>
    <Delete Files="@(XMLFilesToDelete)" />
    <Delete Files="@(PDBFilesToDelete)" />
</Target>

Si vous voulez seulement exclure les fichiers XML (pour dire une version de débogage) vous pouvez faire quelque chose comme ceci:

<AllowedReferenceRelatedFileExtensions>
  <!-- Prevent default XML from debug release  -->
      *.xml
 </AllowedReferenceRelatedFileExtensions>

Fondamentalement, chaque extension (délimitée par un point-virgule) énumérés sera exclu.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top