Compartilhar via


Como usar o mesmo destino em vários arquivos de projeto

Se você criou vários arquivos de projeto de MSBuild , você pode ter descoberto que você precisa usar as mesmas tarefas e destinos em diferentes arquivos de projeto. Em vez de incluir a descrição completa das tarefas ou destinos em cada arquivo de projeto, você pode salvar um destino em um arquivo de projeto separado e então projeto que importá-lo em qualquer outro projeto que seja necessário usar o destino.

Usando o elemento de importação

O elemento de Import é usado para inserir um arquivo de projeto em outro arquivo de projeto. O arquivo de projeto que está sendo importado deve ser um arquivo de projeto válido de MSBuild e conter XML bem formado. O atributo de Project especifica o caminho para o arquivo de projeto importado. Para obter mais informações sobre o elemento de Import , consulte Elemento Import (MSBuild).

Para importar um projeto

  1. Defina, no arquivo de projeto, importando em todas as propriedades e em itens que são usados como parâmetros para propriedades e itens do projeto importado.

  2. Use o elemento de Import para importar o projeto. Por exemplo:

    <Import Project="MyCommon.targets"/>

  3. Após o elemento de Import , defina as propriedades e itens que devem substituir definições padrão das propriedades e dos itens no projeto importado.

Ordem de classificação

Quando MSBuild atinge um elemento de Import , o projeto importado é inserido no projeto efetivamente importando no local do elemento de Import . Portanto, o local do elemento de Import pode afetar os valores das propriedades e dos itens. É importante entender as propriedades e os itens que são definidos pelo projeto importado, e as propriedades e os itens que o projeto utiliza importado.

Quando o projeto é compilado, todas as propriedades são avaliadas primeiro, seguido por itens. Por exemplo, o seguinte XML define o arquivo de projeto importado MyCommon.targets:

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Name>MyCommon</Name>
    </PropertyGroup>

    <Target Name="Go">
        <Message Text="Name=$(Name)"/>
    </Target>
</Project>

O XML a seguir define MyApp.proj, que importa MyCommon.targets:

<Project
    DefaultTargets="Go"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Name>MyApp</Name>
    </PropertyGroup>
    <Import Project="MyCommon.targets"/>
</Project>

Quando o projeto é compilado, a seguinte mensagem é exibida:

Name="MyCommon"

Porque o projeto é importado depois que a propriedade Name foi definida em MyApp.proj, a definição de Name em MyCommon.targets substitui a definição em MyApp.proj. Se, o projeto é importado antes que o nome da propriedade esteja definida, a compilação exibiria a seguinte mensagem:

Name="MyApp"

Use a seguir abordagem importar projetos

  1. Defina, no arquivo de projeto, em todas as propriedades e em itens que são usados como parâmetros para propriedades e itens do projeto importado.

  2. Importar o projeto.

  3. Defina no arquivo de projeto todas as propriedades e itens que devem substituir definições padrão das propriedades e itens do projeto importado.

Exemplo

O exemplo de código a seguir mostra o arquivo de MyCommon.targets que o segundo importações do exemplo de código. O arquivo .targets avalia as propriedades do projeto importando configurar a compilação.

<Project xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
        <Optimize Condition="'$(Flavor)'=='RETAIL'">yes</Optimize>
        <appname>$(MSBuildProjectName)</appname>
    <PropertyGroup>
    <Target Name="Build">
        <Csc Sources="hello.cs"
            Optimize="$(Optimize)"
            OutputAssembly="$(appname).exe"/>
    </Target>
</Project>

O exemplo de código a seguir importa o arquivo de MyCommon.targets.

<Project DefaultTargets="Build"
    xmlns="https://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <Flavor>RETAIL</Flavor>
    </PropertyGroup>
    <Import Project="MyCommon.targets"/>
</Project>

Consulte também

Referência

Elemento Import (MSBuild)

Conceitos

Destinos do MSBuild