40 votes

MSBuild ItemGroup, à l’exclusion des répertoires et des fichiers .svn dans

Comment puis-je construire un groupe d'éléments MSBuild pour exclure les répertoires .svn et tous les fichiers qu'ils contiennent (de manière récursive). J'ai:

 <ItemGroup> 
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
 

Pour le moment, mais cela n'exclut rien!

65voto

Kieran Benton Points 2783

Merci pour votre aide, a réussi à le trier comme suit:

 <ItemGroup>
     <LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" 
                   Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>
 

Il s'avère que le modèle correspondant fonctionne essentiellement sur les fichiers, vous devez donc exclure tout DESSOUS du .svn répertoires ( .svn\\** ) pour MSBuild d'exclure le .svn répertoire lui - même.

12voto

abombss Points 436

Le problème est donc de chaîner des variables pour une raison quelconque dans msbuild. Ce qui suit fonctionne pour moi, notez que je ne dois utiliser que des chemins relatifs basés sur la variable MSBuildProjectDirectory.

 <CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
            Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
 

Ce qui suit ne fonctionne pas:

 <PropertyGroup>
    <WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
            Exclude="$(WebProjectDir)\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
 

Très étrange! Je viens de passer comme 3 heures sur celui-ci.

4voto

Dave Markle Points 44637

Voici une façon encore meilleure de le faire, vraiment récursive. Je n'arrive pas à obtenir votre solution pour aller plus de 1 niveau de profondeur:

 <LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
 

1voto

Anton Backer Points 11

J'ai eu quelques problèmes en utilisant l'approche Inclure / Exclure, alors voici quelque chose qui a fonctionné pour moi à la place:

 <ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
 

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