MSBuild ItemGroup, excluyendo .svn directorios y archivos dentro de
-
09-06-2019 - |
Pregunta
¿Cómo puedo construir un MSBuild ItemGroup excluir .svn directorios y todos los archivos dentro (de forma recursiva).Tengo:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*" Exclude=".svn" />
</ItemGroup>
Por el momento, pero esto no excluye nada!
Solución
Gracias por su ayuda, logró clasificar de la siguiente manera:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)\**\*.*"
Exclude="$(LibrariesReleaseDir)\**\.svn\**" />
</ItemGroup>
Resulta de la coincidencia de patrón, básicamente, se ejecuta en los archivos, por lo que tiene que excluir todo por DEBAJO de la .svn
directorios (.svn\\**
) para MSBuild para excluir la .svn
directorio de sí mismo.
Otros consejos
Así que el problema es con el encadenamiento de las variables, por alguna razón, en msbuild.Las siguientes obras para mí, el aviso de que tengo que sólo el uso de rutas relativas basado en la MSBuildProjectDirectory variable.
<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
<Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
La siguiente no funciona:
<PropertyGroup>
<WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
Exclude="$(WebProjectDir)\**\.svn\**">
<Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>
Muy extraño!Acabo de pasar como 3 horas en este.
Aquí está una manera mejor de hacerlo, realmente de forma recursiva.Me parece que no puede obtener su solución para ir más de 1 nivel de profundidad:
<LibraryFiles
Include="$(LibrariesReleaseDir)**\*.*"
Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
Me he topado con algunos problemas técnicos mediante el Incluir/Excluir de enfoque, así que aquí es algo que ha funcionado para mí en su lugar:
<ItemGroup>
<MyFiles Include=".\PathToYourStuff\**" />
<MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>