Choose-Element (MSBuild)

Bewertet untergeordnete Elemente, um einen Satz von auszuwertenden ItemGroup-Elementen und/oder PropertyGroup-Elementen auszuwählen.

<Projekt><auswählen, wenn><Sie auswählen ... ><>< Andernfalls><wählen Sie> ...

Das Choose-Element enthält mehrere When-Elemente und Condition-Attribute, die in der Reihenfolge von oben nach unten getestet werden, bis eins den Wert „true” ergibt. Wenn mehr als ein When-Element „true” ergibt, wird nur das erste Element verwendet. Falls ein Otherwise-Element vorhanden ist, wird es ausgewertet, wenn keine Bedingung für ein When-Element „true” ergibt.

Syntax

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

Attribute und Elemente

In den folgenden Abschnitten werden Attribute sowie untergeordnete und übergeordnete Elemente beschrieben.

Attribute

Keine

Untergeordnete Elemente

Element Beschreibung
Otherwise Optionales Element.

Gibt den Codeblock mit PropertyGroup- und ItemGroup-Elementen an, die ausgewertet werden sollen, wenn die Bedingungen aller When-Elemente als false ausgewertet werden. Ein Choose-Element kann kein oder ein Otherwise-Element enthalten, und es muss das letzte Element sein.
When Erforderliches Element.

Gibt einen möglichen Codeblock an, den das Choose-Element auswählen kann. Ein Choose-Element kann ein oder mehrere When-Elemente enthalten.

Übergeordnete Elemente

Element Beschreibung
Otherwise Gibt den Codeblock an, der ausgeführt wird, wenn die Bedingungen aller When-Elemente als false ausgewertet werden.
Projekt Erforderliches Stammelement einer MSBuild-Projektdatei.
When Gibt einen möglichen Codeblock an, den das Choose-Element auswählen kann.

Bemerkungen

Die Elemente Choose, When und Otherwise werden zusammen verwendet, um eine Möglichkeit zu bieten, einen Codeabschnitt aus einer Reihe von möglichen Alternativen zur Ausführung auszuwählen. Weitere Informationen finden Sie unter Conditional Constructs (Bedingte Konstrukte).

Beispiel

Das folgende Projekt verwendet das Choose-Element, um auszuwählen, welche Gruppe von Eigenschaftswerten in den When-Elementen festgelegt werden soll. Wenn die Condition-Attribute beider When-Elemente false ergeben, werden die Eigenschaftswerte im Otherwise-Element festgelegt.

<Project
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
    <PropertyGroup>
        <Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
        <OutputType>Exe</OutputType>
        <RootNamespace>ConsoleApplication1</RootNamespace>
        <AssemblyName>ConsoleApplication1</AssemblyName>
        <WarningLevel>4</WarningLevel>
    </PropertyGroup>
    <Choose>
        <When Condition=" '$(Configuration)'=='debug' ">
            <PropertyGroup>
                <DebugSymbols>true</DebugSymbols>
                <DebugType>full</DebugType>
                <Optimize>false</Optimize>
                <OutputPath>.\bin\Debug\</OutputPath>
                <DefineConstants>DEBUG;TRACE</DefineConstants>
            </PropertyGroup>
            <ItemGroup>
                <Compile Include="UnitTesting\*.cs" />
                <Reference Include="NUnit.dll" />
            </ItemGroup>
        </When>
        <When Condition=" '$(Configuration)'=='retail' ">
            <PropertyGroup>
                <DebugSymbols>false</DebugSymbols>
                <Optimize>true</Optimize>
                <OutputPath>.\bin\Release\</OutputPath>
                <DefineConstants>TRACE</DefineConstants>
            </PropertyGroup>
        </When>
        <Otherwise>
            <PropertyGroup>
                <DebugSymbols>true</DebugSymbols>
                <Optimize>false</Optimize>
                <OutputPath>.\bin\$(Configuration)\</OutputPath>
                <DefineConstants>DEBUG;TRACE</DefineConstants>
            </PropertyGroup>
        </Otherwise>
    </Choose>
    <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

Weitere Informationen