2008-09-16 30 views

Répondre

64

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

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

Transforme le motif correspondant fonctionne essentiellement sur les fichiers, vous devez donc exclure tout DESSOUS les répertoires .svn (.svn\\**) pour MSBuild exclure le répertoire .svn lui-même.

+1

@Kieran Benton: Merci pour la mise à jour, je vais soumettre une Demande connect.microsoft.com pour clarifier la documentation MSDN. – user7116

+1

Je remarque que vous avez également préfixé la valeur Exclude avec "$ (LibrariesReleaseDir) \\ ** \" (par rapport à la valeur de votre OP). Est-ce important? –

4

Voici une façon encore meilleure de le faire, vraiment récursivement. Je ne peux pas sembler obtenir votre solution pour aller plus de 1 niveau profond:

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

Cela fonctionne-t-il également sur le fichier .svn \ entries, étant donné qu'il n'y a pas de point dans le nom de fichier? –

12

La question est donc avec des variables enchaînant pour une raison quelconque dans msbuild. Le travail suivant pour moi, notez que je dois seulement utiliser 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 3 heures sur celui-ci.

+2

BTW: C'est la bonne réponse. – splattne

1

J'ai rencontré quelques problèmes en utilisant la Include/Exclude approche, alors voici quelque chose qui a travaillé pour moi à la place:

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