MSBuild ItemGroup, à l’exclusion des répertoires et des fichiers .svn dans
-
09-06-2019 - |
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!
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>