MSBuild ItemGroup, excluyendo.svn directorios y archivos dentro


¿Cómo puedo construir un ItemGroup de MSBuild para excluir?directorios svn y todos los archivos dentro (recursivamente). Tengo:

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

En este momento, pero esto no excluye nada!

Author: Nicolas Dorier, 2008-09-16

4 answers

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 lo QUE esté DEBAJO de los directorios .svn (.svn\\**) para que MSBuild excluya el propio directorio .svn.

 65
Author: Kieran Benton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-02 12:28:07

Así que el problema es con encadenar variables por alguna razón en msbuild. Lo siguiente funciona para mí, tenga en cuenta que solo tengo que 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.

 12
Author: abombss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-18 11:37:22

Aquí hay una manera aún mejor de hacerlo, verdaderamente recursivamente. Parece que no puedo conseguir su solución para ir más de 1 nivel de profundidad:

<LibraryFiles  
    Include="$(LibrariesReleaseDir)**\*.*"  
    Exclude="$(LibrariesReleaseDir)**\.svn\**\*.*"/>
 4
Author: Dave Markle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-19 13:20:33

Me he encontrado con algunos fallos utilizando el enfoque Incluir / Excluir, así que aquí hay algo que ha funcionado para mí en su lugar:

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
 1
Author: Anton Backer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-04-30 16:23:24