Question

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!

Était-ce utile?

La solution

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

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

Il s’avère que la correspondance des modèles s’exécute essentiellement sur les fichiers. Vous devez donc tout exclure AU-DESSOUS des répertoires .svn ( .svn \\ ** ) que MSBuild doit exclure. le répertoire .svn lui-même.

Autres conseils

Le problème concerne donc le chaînage de 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.

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\**\*.*"/>

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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top