Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Em um arquivo de projeto, você pode usar curingas para incluir todos os arquivos em um diretório ou um conjunto aninhado de diretórios como entradas para uma compilação. No entanto, pode haver um arquivo no diretório ou um diretório em um conjunto aninhado de diretórios que você não deseja incluir como entrada para uma compilação. Você pode excluir explicitamente esse arquivo ou diretório da lista de entradas. Também pode haver um arquivo em um projeto que você só deseja incluir sob determinadas condições. Você pode declarar explicitamente as condições sob as quais um arquivo é incluído em uma compilação.
Observação
As técnicas descritas neste artigo não são aplicáveis a F# e C++. Esses sistemas de projeto gerenciam os próprios arquivos de origem.
Excluir um arquivo usando o Visual Studio
Se você estiver usando o Visual Studio, selecione o arquivo no Gerenciador de Soluções, exiba a janela Propriedades (pressione Alt+Enter) e defina a Ação de compilação como Nenhuma.
Isso resulta nas seguintes alterações no arquivo de projeto MSBuild:
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
<ItemGroup>
<None Include="ClassToExclude.cs" />
</ItemGroup>
Isso funciona bem para alguns arquivos, mas não aumenta para um número maior de arquivos ou arquivos que correspondem a um determinado padrão. Em projetos .NET, você pode usar o MSBuild para excluir arquivos e diretórios usando uma expressão curinga, também chamada de glob, conforme descrito a seguir.
Excluir arquivos ou diretórios em projetos .NET
As listas de itens são os arquivos de entrada para uma compilação. Para a maioria dos projetos, como projetos do SDK do .NET, há listas de itens predefinidas de diferentes tipos de itens (por exemplo, Compile
para arquivos de origem, Content
para determinados arquivos estáticos e assim por diante) que já estão definidos pelas importações padrão. Uma lista desses itens pode ser encontrada em Common MSBuild project items. No código do seu projeto, eles são predefinidos para incluir tudo o que é relevante; por exemplo, Compile
em um projeto C# inclui todos os arquivos com a .cs
extensão.
Para excluir arquivos, você pode usar o Remove
atributo no item.
<ItemGroup>
<Compile Remove="ClassToExclude.cs" />
</ItemGroup>
Você pode especificar diversos arquivos individuais ou diversos padrões globais.
<ItemGroup>
<Compile Remove="Contoso*.cs" /> <!-- Wildcard on filename -->
<Compile Remove="File1.cs;File2.cs" /> <!-- List of files with separator -->
<Compile Remove="Contoso/**/*.cs" /> <!-- All .cs files in a directory subtree -->
</ItemGroup>
Para obter uma lista de padrões suportados, consulte Formatos de padrão.
Incluir e excluir arquivos ou diretórios no idioma MSBuild
Na linguagem MSBuild bruta (ou seja, sem nenhuma das importações padrão ou referência a um SDK), os itens que você deseja incluir são declarados separadamente ou como um grupo usando o Include
atributo. Por exemplo:
<CSFile Include="Form1.cs"/>
<CSFile Include ="File1.cs;File2.cs"/>
<CSFile Include="*.cs"/>
<JPGFile Include="Images\**\*.jpg"/>
Se você estiver usando curingas para incluir todos os arquivos em um diretório ou um conjunto aninhado de diretórios como entradas para uma compilação, pode haver um ou mais arquivos no diretório ou um diretório no conjunto aninhado de diretórios que você não deseja incluir. Para excluir um item da lista de itens, use o Exclude
atributo.
Exclude
não é, na verdade, uma operação de item; ele não pode ser usado por si só, mas apenas como um modificador para Include
.
Para incluir todos os arquivos .cs
ou .vb
, exceto Form2
Use um dos seguintes
Include
eExclude
atributos:<CSFile Include="*.cs" Exclude="Form2.cs"/>
ou
<VBFile Include="*.vb" Exclude="Form2.vb"/>
Para incluir todos os arquivos .cs
ou .vb
, exceto Form2
e Form3
.
Use um dos seguintes
Include
eExclude
atributos:<CSFile Include="*.cs" Exclude="Form2.cs;Form3.cs"/>
ou
<VBFile Include="*.vb" Exclude="Form2.vb;Form3.vb"/>
Para incluir todos os .jpg
arquivos em subdiretórios do Images
diretório, exceto aqueles no Version2
diretório
Use o seguinte
Include
eExclude
atributos:<JPGFile Include="Images\**\*.jpg" Exclude = "Images\**\Version2\*.jpg"/>
Observação
Você deve especificar o caminho para ambos os atributos. Se você usar um caminho absoluto para especificar locais de
Include
arquivo no atributo, você também deve usar um caminho absoluto noExclude
atributo, se você usar um caminho relativo noInclude
atributo, você também deve usar um caminho relativo noExclude
atributo.
Excluir e remover
Se você estiver definindo suas próprias listas de itens, você deve usar Exclude
sempre que possível. Há um benefício de desempenho para usar Exclude
na mesma declaração que Include
, uma vez que os itens que seriam excluídos não precisam ser processados.
Use Remove
quando tiver uma lista de itens predefinida, como no caso das listas de itens padrão como Compile
e Content
. Nesse caso, Exclude
não é suportado.
Observação
Se você estiver usando um SDK que ofereça suporte a ele, poderá definir a $(OverrideDefaultCompileItems)
propriedade como true
, e definir seu próprio Compile
item com Include
e, opcionalmente, Exclude
.
Use condições para excluir um arquivo ou diretório das entradas de uma compilação
Se houver itens que você deseja incluir, por exemplo, em uma compilação de Depuração, mas não em uma compilação de versão, você pode usar o Condition
atributo para especificar as condições sob as quais incluir o item.
Para incluir o arquivo Formula.vb somente nas compilações de versão
Use um
Condition
atributo semelhante ao seguinte:<Compile Include="Formula.vb" Condition=" '$(Configuration)' == 'Release' " />
Exemplo
O exemplo de código a seguir cria um projeto com todos os arquivos .cs no diretório, exceto Form2.cs.
<Project DefaultTargets="Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
<PropertyGroup>
<builtdir>built</builtdir>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" Exclude="Form2.cs"/>
<Reference Include="System.dll"/>
<Reference Include="System.Data.dll"/>
<Reference Include="System.Drawing.dll"/>
<Reference Include="System.Windows.Forms.dll"/>
<Reference Include="System.XML.dll"/>
</ItemGroup>
<Target Name="PreBuild">
<Exec Command="if not exist $(builtdir) md $(builtdir)"/>
</Target>
<Target Name="Compile" DependsOnTargets="PreBuild">
<Csc Sources="@(CSFile)"
References="@(Reference)"
OutputAssembly="$(builtdir)\$(MSBuildProjectName).exe"
TargetType="exe" />
</Target>
</Project>