MSBuild ItemGroup, escluse le directory .svn e i file all'interno
-
09-06-2019 - |
Domanda
Come posso costruire un ItemGroup MSBuild per escludere le directory .svn e tutti i file all'interno (ricorsivamente).Ho avuto:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
Al momento, ma questo non esclude nulla!
Soluzione
Grazie per il tuo aiuto, sono riuscito a ordinarlo come segue:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*"
Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>
Risulta che la corrispondenza del modello funziona fondamentalmente sui file, quindi devi escludere tutto SOTTO il .svn
directory (.svn\\**
) affinché MSBuild escluda il file .svn
directory stessa.
Altri suggerimenti
Quindi il problema riguarda il concatenamento delle variabili per qualche motivo in msbuild.Quanto segue funziona per me, nota che devo utilizzare solo percorsi relativi basati sulla variabile MSBuildProjectDirectory.
<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
<Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
Quanto segue non funziona:
<PropertyGroup>
<WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
Exclude="$(WebProjectDir)\**\.svn\**">
<Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
Molto strano!Ho appena trascorso circa 3 ore su questo.
Ecco un modo ancora migliore per farlo, veramente ricorsivo.Non riesco a far sì che la tua soluzione vada più di 1 livello in profondità:
<LibraryFiles
Include="$(LibrariesReleaseDir)**\*.*"
Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
Ho riscontrato alcuni problemi utilizzando l'approccio Include/Exclude, quindi ecco qualcosa che ha funzionato per me:
<ItemGroup>
<MyFiles Include=".\PathToYourStuff\**" />
<MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>