Použití stejného cíle ve více souborech projektu
Pokud jste vytvořili několik souborů projektu MSBuild, možná jste zjistili, že potřebujete použít stejné úkoly a cíle v různých souborech projektu. Místo zahrnutí kompletního popisu těchto úkolů nebo cílů do každého souboru projektu můžete cíl uložit do samostatného souboru projektu a pak tento projekt importovat do jakéhokoli jiného projektu, který potřebuje použít cíl.
Použití elementu Import
Tento Import
prvek slouží k vložení jednoho souboru projektu do jiného souboru projektu. Importovaný soubor projektu musí být platným souborem projektu MSBuild a musí obsahovat formát XML ve správném formátu. Atribut Project
určuje cestu k importovanému souboru projektu. Další informace o elementu Import
naleznete v tématu Import element (MSBuild).
Import projektu
Definujte v importovaném souboru projektu všechny vlastnosti a položky, které se používají jako parametry pro vlastnosti a položky v importovaném projektu.
Pomocí elementu
Import
importujte projekt. Příklad:<Import Project="MyCommon.targets"/>
Za elementem
Import
definujte všechny vlastnosti a položky, které musí přepsat výchozí definice vlastností a položek v importovaném projektu.
Pořadí vyhodnocování
Když MSBuild dosáhne Import
elementu, importovaný projekt se efektivně vloží do importujícího projektu v umístění Import
prvku. Proto umístění elementu Import
může ovlivnit hodnoty vlastností a položek. Je důležité pochopit vlastnosti a položky nastavené importovaným projektem a vlastnosti a položky, které importovaný projekt používá.
Při sestavení projektu se nejprve vyhodnotí všechny vlastnosti následované položkami. Například následující xml definuje importovaný soubor projektu MyCommon.targets:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyCommon</Name>
</PropertyGroup>
<Target Name="Go">
<Message Text="Name=$(Name)"/>
</Target>
</Project>
Následující xml definuje MyApp.proj, který importuje MyCommon.targets:
<Project
DefaultTargets="Go"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Name>MyApp</Name>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>
Po sestavení projektu se zobrazí následující zpráva:
Name="MyCommon"
Vzhledem k tomu, že se projekt naimportuje po definování vlastnosti Name
v myApp.proj, definice Name
v souboru MyCommon.targets přepíše definici v myApp.proj. Pokud je projekt importován před definováním názvu vlastnosti, sestavení zobrazí následující zprávu:
Name="MyApp"
Při importu projektů použijte následující přístup:
Definujte v souboru projektu všechny vlastnosti a položky, které se používají jako parametry pro vlastnosti a položky v importovaném projektu.
Importujte projekt.
Definujte v souboru projektu všechny vlastnosti a položky, které musí přepsat výchozí definice vlastností a položek v importovaném projektu.
Příklad 1
Následující příklad kódu ukazuje myCommon.targets soubor, který druhý příklad kódu importuje. Soubor .targets vyhodnotí vlastnosti z importujícího projektu a nakonfiguruje sestavení.
<Project xmlns="http://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>
Příklad 2
Následující příklad kódu naimportuje soubor MyCommon.targets .
<Project DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Flavor>RETAIL</Flavor>
</PropertyGroup>
<Import Project="MyCommon.targets"/>
</Project>