Elemento de importação (MSBuild)
Importa o conteúdo de um arquivo de projeto para o outro arquivo de projeto.
<Import Project="ProjectPath"
Condition="'String A'=='String B'" />
Atributos e elementos
As seções a seguir descrevem atributos, elementos filho, e elementos pai.
Atributos
Atributo |
Descrição |
---|---|
Project |
Atributo obrigatório. O caminho do arquivo de projeto para importar. O caminho pode incluir curingas. Os arquivos correspondentes são importados em ordem classificada. Usando esse recurso, você pode adicionar código para um projeto simplesmente adicionando o arquivo de código para um diretório. |
Condition |
Atributo opcional. Uma condição a ser avaliada. Para obter mais informações, consulte Condições do MSBuild. |
Elementos filho
Nenhum
Elementos pai
Elemento |
Descrição |
---|---|
Elemento raiz necessários de um MSBuild arquivo de projeto. |
|
Contém uma coleção de Import elementos agrupados sob condição opcional. |
Comentários
Usando o Import elemento, você pode reutilizar o código que é comum a vários arquivos de projeto. Isso torna mais fácil manter o código, porque todas as atualizações que você fizer o código compartilhado são propagadas para todos os projetos de importação-lo.
Por convenção, os arquivos de projeto importado compartilhado são salvos como arquivos. targets, mas são padrão MSBuild arquivos de projeto. MSBuildimpede que você importar um projeto que tem uma extensão de nome de arquivo diferente, mas recomendamos que você use a extensão. targets para manter a consistência.
Caminhos relativos no projetos importados são interpretados relativo ao diretório do projeto de importação. Portanto, se um arquivo de projeto é importado para vários arquivos de projeto em locais diferentes, os caminhos relativos no arquivo de projeto importado serão interpretados diferente para cada projeto importado.
Todos os MSBuild Propriedades reservadas que se relacionam com o arquivo de projeto, por exemplo, MSBuildProjectDirectory e MSBuildProjectFile, que são referenciados em um projeto importado são atribuídos valores com base no arquivo de importação do project.
Se o projeto importado não tiver um DefaultTargets atributo, importado projetos são inspecionados na ordem em que eles são importados, e o valor do primeiro descobertos DefaultTargets atributo é usado. Por exemplo, se ProjectA importa ProjectB e ProjectC (nessa ordem) e importa de ProjectB ProjectD, MSBuild primeiro procura por DefaultTargets especificado em ProjectA, em seguida, ProjectB, e em seguida, ProjectD e finalmente ProjectC.
O esquema de um projeto importado é idêntico de um projeto padrão. Embora MSBuild pode ser capaz de criar um projeto importado, é improvável porque um projeto importado normalmente contém informações sobre quais propriedades para definir ou a ordem na qual executar destinos. O projeto importado depende do projeto no qual ele é importado para fornecer essas informações.
Observação
Enquanto trabalham de instruções de importação de condicional na linha de comando MSBuilds, eles não funcionam com o MSBuild na Visual Studio o ambiente de desenvolvimento integrado (IDE).Imports condicionais são avaliados usando os valores de configuração e plataforma são definidos quando o projeto for carregado. Se forem subseqüentemente feitas alterações que exigem uma reavaliação dos condicionais no arquivo de projeto, por exemplo, alterando a plataforma Visual Studio revê as condições em Propriedades e os itens, mas não em importações.Porque a importação de condicional é reavaliada não, a importação será ignorada.
Para contornar este problema, coloque condicionais importações nos arquivos. targets ou coloque o código em um bloco condicional como um Escolher elemento (MSBuild) bloco.
Caracteres curinga
No.NET Framework 4, o MSBuild permite caracteres curinga no atributo de projeto. Quando houver caracteres curinga, todas as ocorrências encontradas são classificadas (para a possibilidade de reprodução) e, em seguida, eles são importados nessa ordem como se a ordem foi explicitamente definida.
Isso é útil se você quiser oferecer um ponto de extensibilidade para que outra pessoa pode importar um arquivo sem a necessidade de adicionar explicitamente o nome do arquivo para o arquivo de importação. Para essa finalidade, Microsoft.Common.Targets contém a seguinte linha na parte superior do arquivo.
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
Exemplo
O exemplo a seguir mostra um projeto que tem vários itens e propriedades e importa um arquivo de projeto geral.
<Project DefaultTargets="Compile"
xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<resourcefile>Strings.resx</resourcefile>
<compiledresources>
$(O)\$(MSBuildProjectName).Strings.resources
</compiledresources>
</PropertyGroup>
<ItemGroup>
<CSFile Include="*.cs" />
<Reference Include="System" />
<Reference Include="System.Data" />
</ItemGroup>
<Import Project="$(CommonLocation)\General.targets" />
</Project>
Consulte também
Tarefas
Como: usar o mesmo destino em vários arquivos de projeto