Partilhar via


Elemento de importação (MSBuild)

Importa o conteúdo de um arquivo de projeto para 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 a 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

Project

Elemento raiz necessários de um MSBuild arquivo de projeto.

ImportGroup

Contém uma coleção de Import elementos agrupados sob uma 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 qualquer atualização feita por você para o código compartilhado é propagadas para todos os projetos que importação-lo.

Por convenção, os arquivos de projeto importado compartilhados 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 reservado propriedades relacionadas ao 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 projeto.

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 especificados na ProjectA, e 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 não contém informações sobre quais propriedades para definir ou a ordem em que a execução de destinos.O projeto importado depende o projeto no qual ele é importado para fornecer essas informações.

ObservaçãoObservação

Enquanto as instruções de importação condicional trabalham em MSBuilds de linha de comando, 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 itens, mas não em importações.Porque a condicional de importação não será reavaliada, a importação será ignorada.

Para contornar isso, colocar 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 Project.Quando houver caracteres curinga, todas as ocorrências encontradas são classificadas (para aspectos) 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 que seja preciso 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

Conceitos

Referência de esquema do arquivo de projeto MSBuild