Compartilhar via


How to: Use o mesmo destino em vários arquivos de projeto

Se você tiver criado várias MSBuild arquivos de projeto, você talvez descobriram que você precise usar as mesmas tarefas e destinos em arquivos de projeto diferente. Em vez de incluir a descrição completa desses tarefas ou destinos em cada arquivo de projeto, você pode salvar um destino em um arquivo de projeto separado e Importar projeto para qualquer projeto que precisa usar o destino.

Usando o elemento de importação

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

Para importar um projeto

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

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

    <Import Project="MyCommon.targets"/>

  3. Seguindo o Import elemento, definir todas as propriedades e os itens que devem substituir as definições de padrão de propriedades e os itens no projeto importado.

Ordem de avaliação

Quando MSBuild atinge um Import elemento, o projeto importado efetivamente é inserido no projeto no local de importação de Import elemento. Portanto, o local da Import elemento pode afetar os valores das propriedades e itens. É importante entender as propriedades e os itens que são definidas pelo projeto importado e as propriedades e itens que o projeto importado usa.

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

<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 o MyApp.proj, o 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 definido no MyApp.proj, a definição de Name na MyCommon.targets substitui a definição no MyApp.proj. Se, o projeto é importado antes da propriedade que nome é definido, a compilação exibe a seguinte mensagem:

Name="MyApp"

Use a seguinte abordagem ao importar projetos

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

  2. Importe o projeto.

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

Exemplo

O exemplo de código a seguir mostra o arquivo de MyCommon.targets que o segundo exemplo de código importa. O arquivo. targets avalia as propriedades do projeto de importação para 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 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 de importação (MSBuild)

Conceitos

Destinos do MSBuild