Compartilhar via


Elemento Import (MSBuild)

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

<Importação do Projeto><>

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 necessário.

O caminho do arquivo de projeto a ser importado. O caminho pode incluir caracteres curinga. Os arquivos correspondentes são importados em ordem classificada. 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 do projeto.

Elementos filho

None

Elementos pai

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

Observações

Usando o Import elemento, você pode reutilizar o código que é comum a muitos arquivos de projeto. O uso de importações facilita a manutenção do código, pois todas as atualizações que você fizer 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. O MSBuild não impede que você importe um projeto que tenha uma extensão de nome de arquivo diferente, mas recomendamos que você use a .targets extensão para consistência.

Caminhos relativos em projetos importados são interpretados em relação ao diretório do projeto de importação (com algumas exceções descritas posteriormente neste parágrafo). Portanto, se um arquivo de projeto for 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. Há 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 referenciadas em um projeto importado (por exemplo, MSBuildProjectDirectory e MSBuildProjectFile) são valores atribuídos 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 o ProjectA importar o ProjectB e o ProjectC (nessa ordem) e o ProjectB importar o ProjectD, o MSBuild primeiro procurará DefaultTargets especificado no ProjectA, depois no ProjectB, depois no ProjectD e, por fim, no ProjectC.

O esquema de um projeto importado é idêntico ao de um projeto padrão. Embora o MSBuild possa 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 ele é importado para fornecer essas informações.

Curingas

O MSBuild permite curingas no atributo Project. Quando há caracteres curinga, 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 essa finalidade, Microsoft.Common.Targets contém a linha a seguir na parte superior do arquivo.

<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