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
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.
Use o elemento de Import para importar o projeto. Por exemplo:
<Import Project="MyCommon.targets"/>
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
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.
Importar o projeto.
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>