Partilhar via


Elemento de importação (MSBuild)

Importa o conteúdo de um arquivo de projeto para outro arquivo de projeto.

<Importação de Projetos><>

Sintaxe

<Import Project="ProjectPath"
    Condition="'String A'=='String B'" />

Atributos e elementos

As seções a seguir descrevem atributos, elementos filho e elementos pai.

Attributes

Attribute Description
Project Atributo obrigatório.

O caminho do arquivo de projeto a ser importado. O caminho pode incluir curingas. Os arquivos correspondentes são importados em ordem ordenada. Usando esse recurso, você pode adicionar código a um projeto apenas adicionando o arquivo de código a um diretório.
Condition Atributo opcional.

Uma condição a ser avaliada. Para obter mais informações, consulte Condições.
Label Atributo opcional.

Aplica um identificador a esse elemento de importação.
Sdk Atributo opcional.

Faz referência a um SDK de projeto.

Elementos filho

Nenhum

Elementos pai

Elemento Description
Projeto Elemento raiz necessário de um arquivo de projeto MSBuild.
ImportGroup Contém uma coleção de Import elementos agrupados sob uma condição opcional.

Observações

Usando o elemento , você pode reutilizar o Import código que é comum a muitos arquivos de projeto. O uso de importações facilita a manutenção do código, porque todas as atualizações feitas no código compartilhado são propagadas para todos os projetos que o importam.

Por convenção, os arquivos de projeto importados compartilhados são salvos como .targets arquivos, mas são arquivos de projeto padrão do MSBuild. MSBuild não impede que você importe um projeto que tem uma extensão de nome de arquivo diferente, mas recomendamos que você use a .targets extensão para consistência.

Os caminhos relativos em projetos importados são interpretados em relação ao diretório do projeto importador (com algumas exceções descritas mais adiante neste parágrafo). 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 de forma diferente para cada projeto importado. Existem duas exceções. Uma exceção é que, em Import elementos , o caminho é sempre interpretado em relação ao projeto que contém o Import elemento . Outra exceção é que o UsingTask sempre interpreta o caminho relativo para o AssemblyFile atributo relativo ao arquivo que contém o UsingTask elemento .

Todas as propriedades reservadas do MSBuild relacionadas ao arquivo de projeto que são referenciadas em um projeto importado (por exemplo, MSBuildProjectDirectory e MSBuildProjectFile) são atribuídas valores com base no arquivo de projeto de importação.

Se o projeto importado não tiver um DefaultTargets atributo, os projetos importados serão inspecionados na ordem em que são importados e o valor do primeiro atributo descoberto DefaultTargets será usado. Por exemplo, se Projeta importa ProjectB e ProjectC (nessa ordem), e ProjectB importa ProjectD, MSBuild primeiro procura DefaultTargets especificado em Projeta, depois ProjectB, ProjectD e, finalmente, ProjectC.

O esquema de um projeto importado é idêntico ao de um projeto padrão. Embora o MSBuild possa ser capaz de criar um projeto importado, é improvável porque um projeto importado normalmente não contém informações sobre quais propriedades definir ou a ordem na qual executar destinos. O projeto importado depende do projeto para o qual é importado para fornecer essas informações.

Curingas

O MSBuild permite curingas no atributo Project. Quando há curingas, todas as correspondências encontradas são classificadas (para reprodutibilidade) e, em seguida, são importadas nessa ordem como se a ordem tivesse sido definida explicitamente.

Isso é útil se você quiser oferecer um ponto de extensibilidade para que outra pessoa possa importar um arquivo sem exigir que você adicione explicitamente o nome do arquivo ao arquivo de importação. Para este efeito, Microsoft.Common.Targets contém a seguinte linha na parte superior do ficheiro.

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*" Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>

Example

O exemplo a seguir mostra um projeto que tem vários itens e propriedades e importa um arquivo de projeto geral.

<Project DefaultTargets="Compile">

    <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