When – element (MSBuild)

Určuje možný blok kódu, který Choose má prvek vybrat.

<Project>Choose When><Choose>>< ... <<Jinak><zvolte> ...

Syntaxe

<When Condition="'StringA'=='StringB'">
    <PropertyGroup>... </PropertyGroup>
    <ItemGroup>... </ItemGroup>
    <Choose>... </Choose>
</When>

Atributy a prvky

Následující části popisují atributy, podřízené prvky a nadřazené prvky.

Atributy

Atribut Popis
Podmínka Požadovaný atribut.

Podmínka, která se má vyhodnotit Další informace naleznete v tématu Podmínky.

Podřízené prvky

Element (Prvek) Popis
Zvolit Volitelný element.

Vyhodnotí podřízené prvky a vybere jednu část kódu, která se má provést. Prvek může obsahovat nula nebo více Choose prvků When .
ItemGroup Volitelný element.

Obsahuje sadu uživatelem definovaných elementů Položky . Prvek může obsahovat nula nebo více ItemGroup prvků When .
Propertygroup Volitelný element.

Obsahuje sadu uživatelem definovaných elementů vlastnosti . Prvek může obsahovat nula nebo více PropertyGroup prvků When .

Nadřazené prvky

Element (Prvek) Popis
Choose – element (MSBuild) Vyhodnotí podřízené prvky a vybere jednu část kódu, která se má provést.

Poznámky

Pokud se Condition atribut vyhodnotí jako true, ItemGroup podřízený prvek a PropertyGroup prvky elementu When se spustí a všechny následné When prvky se přeskočí.

Společně jsou Choosepoužity , Whena Otherwise elementy poskytnout způsob, jak vybrat jeden oddíl kódu provést z řady možných alternativ. Další informace naleznete v tématu Podmíněné konstrukce.

Příklad

Následující projekt používá Choose prvek k výběru sady hodnot vlastností v elementech When , které chcete nastavit. Pokud jsou Condition atributy obou When prvků vyhodnoceny jako false, hodnoty vlastností v elementu Otherwise jsou nastaveny. Při spuštění příkladu zkuste předat různá nastavení vlastností z příkazového řádku, například msbuild myproj.proj -p:Configuration=Test;Platform=x86, a podívejte se, jak vypadá výstupní cesta. Předpokládejme, že požadavek je nastavit určité vlastnosti pro sestavení ladění a vydávání verzí, včetně výstupní složky založené na bitové verzi platformy, nikoli na skutečném názvu platformy, a také podporovat konfigurace Test a Retail, ale považovat za "Retail" jako "Release".

<Project>
    <PropertyGroup>
       <Configuration Condition="$(Configuration) == ''">Debug</Configuration>
       <Platform Condition="$(Platform) == ''">x64</Platform>
    </PropertyGroup>

  <Choose>
     <When Condition="$(Configuration)=='Test'">
        <PropertyGroup>
            <DebugSymbols>true</DebugSymbols>
            <DebugType>full</DebugType>
            <Optimize>false</Optimize>
            <DefineConstants>DEBUG;TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
            <PropertyGroup>
                <OutputPath>.\bin\Test\32-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
            <PropertyGroup>
                <OutputPath>.\bin\Test\64-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <!-- For any other platform, use the platform name -->
          <Otherwise>
            <PropertyGroup>
              <OutputPath>.\bin\Test\$(Platform)\</OutputPath>
            </PropertyGroup>
          </Otherwise>
        </Choose>
      </When>
      <When Condition="$(Configuration)=='Retail' Or $(Configuration)=='Release'">
        <PropertyGroup>
            <DebugSymbols>false</DebugSymbols>
            <Optimize>true</Optimize>
            <DefineConstants>TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform) == 'ARM32'">
             <PropertyGroup>
                <OutputPath>.\bin\Release\32-bit\</OutputPath>
             </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform) == 'ARM64'">
             <PropertyGroup>
                <OutputPath>.\bin\Release\64-bit\</OutputPath>
             </PropertyGroup>
          </When>
          <!-- For any other platform, use the platform name -->
          <Otherwise>
            <PropertyGroup>
                <OutputPath>.\bin\Release\$(Platform)\</OutputPath>
            </PropertyGroup>
          </Otherwise>
        </Choose>
      </When>
      <!-- For any other configuration, use debug properties-->
      <Otherwise>
        <PropertyGroup>
            <DebugSymbols>true</DebugSymbols>
            <DebugType>full</DebugType>
            <Optimize>false</Optimize>
            <DefineConstants>DEBUG;TRACE</DefineConstants>
        </PropertyGroup>
        <Choose>
          <When Condition="$(Platform)=='x86' Or $(Platform)=='ARM32'">
            <PropertyGroup>
              <OutputPath>.\bin\$(Configuration)\32-bit\</OutputPath>
            </PropertyGroup>
          </When>
          <When Condition="$(Platform)=='x64' Or $(Platform)=='ARM64'">
            <PropertyGroup>
              <OutputPath>.\bin\$(Configuration)\64-bit\</OutputPath>
            </PropertyGroup>
          </When>
        </Choose>
       </Otherwise>
  </Choose>

  <Target Name="ShowProperties">
    <Message Text="DebugSymbols: $(DebugSymbols)"/>
    <Message Text="Optimize: $(Optimize)"/>
    <Message Text="DefineConstants: $(DefineConstants)"/>
    <Message Text="OutputPath: $(OutputPath)"/>
  </Target>
</Project>

Viz také