Pergunta

Como posso construir um ItemGroup do MSBuild para excluir diretórios .svn e todos os arquivos dentro dele (recursivamente).Eu tenho:

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

No momento, mas isso não exclui nada!

Foi útil?

Solução

Obrigado pela ajuda, consegui classificar da seguinte forma:

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

Acontece que a correspondência de padrões basicamente é executada em arquivos, então você deve excluir tudo ABAIXO do .svn diretórios (.svn\\**) para o MSBuild excluir o .svn próprio diretório.

Outras dicas

Portanto, o problema é encadear variáveis ​​por algum motivo no msbuild.O seguinte funciona para mim, observe que preciso usar apenas caminhos relativos com base na variável MSBuildProjectDirectory.

<CreateItem Include="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\*.*"
            Exclude="$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

O seguinte não funciona:

<PropertyGroup>
    <WebProjectDir>$(MSBuildProjectDirectory)\..\Client\Web\Foo.Web.UI</WebProjectDir>
</PropertyGroup>
<CreateItem Include="$(WebProjectDir)\**\*.*"
            Exclude="$(WebProjectDir)\**\.svn\**">
  <Output TaskParameter="Include" ItemName="WebFiles" />
</CreateItem>

Muito estranho!Passei cerca de 3 horas neste.

Aqui está uma maneira ainda melhor de fazer isso, verdadeiramente recursivamente.Não consigo fazer com que sua solução vá além de um nível de profundidade:

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

Encontrei algumas falhas ao usar a abordagem Incluir/Excluir, então aqui está algo que funcionou para mim:

<ItemGroup>
    <MyFiles Include=".\PathToYourStuff\**" />
    <MyFiles Remove=".\PathToYourStuff\**\.svn\**" />
</ItemGroup>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top