.net - trabajo - MSBuild ItemGroup, excluyendo los directorios.svn y los archivos dentro de
subversion en linux (4)
¿Cómo puedo construir un MSBuild ItemGroup para excluir directorios .svn y todos los archivos dentro (recursivamente). Tengo:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)/**/*.*" Exclude=".svn" />
</ItemGroup>
Por el momento, ¡pero esto no excluye nada!
Aquí hay una forma aún mejor de hacerlo, de manera verdaderamente recursiva. Parece que su solución no tiene más de 1 nivel de profundidad:
<LibraryFiles
Include="$(LibrariesReleaseDir)**/*.*"
Exclude="$(LibrariesReleaseDir)**/.svn/**/*.*"/>
Entonces, el problema está en encadenar variables por alguna razón en msbuild. Lo siguiente funciona para mí, observe que solo debo usar rutas relativas basadas en 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>
Lo 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 caso.
Me he encontrado con algunos problemas técnicos usando el enfoque Incluir / Excluir, así que aquí hay algo que me ha funcionado:
<ItemGroup>
<MyFiles Include="./PathToYourStuff/**" />
<MyFiles Remove="./PathToYourStuff/**/.svn/**" />
</ItemGroup>
Gracias por su ayuda, logró ordenarlo de la siguiente manera:
<ItemGroup>
<LibraryFiles Include="$(LibrariesReleaseDir)/**/*.*"
Exclude="$(LibrariesReleaseDir)/**/.svn/**" />
</ItemGroup>
Resulta que la coincidencia de patrones básicamente se ejecuta en archivos, por lo que debe excluir todo A CONTINUACIÓN de los directorios .svn//**
( .svn//**
) para que MSBuild excluya el directorio .svn
.