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

  1. 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.

  2. Pomocí elementu Import importujte projekt. Příklad:

    <Import Project="MyCommon.targets"/>

  3. 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:

  1. 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.

  2. Importujte projekt.

  3. 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>