Freigeben über


Choose-Element (MSBuild)

Wertet untergeordnete Elemente aus, um auszuwertende ItemGroup-Elemente und/oder PropertyGroup-Elemente auszuwählen.

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

Attribute und Elemente

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

Attribute

Keine.

Untergeordnete Elemente

Element

Beschreibung

Otherwise

Optionales Element

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

When

Erforderliches Element.

Gibt einen möglichen Codeblock an, den das Choose-Element auswählen kann. Es kann ein oder mehrere When-Elemente in einem Choose-Element geben.

Übergeordnete Elemente

Element

Beschreibung

Otherwise

Gibt den Codeblock an, der ausgeführt werden soll, wenn die Bedingungen aller When-Elemente false ergeben.

Project

Erforderliches Stammelement einer MSBuild-Projektdatei.

When

Gibt einen möglichen Codeblock an, den das Choose-Element auswählen kann.

Hinweise

Das Choose-Element, das When-Element und das Otherwise-Element werden zusammen verwendet, um die Auswahl eines auszuführenden Codeabschnitts aus verschiedenen Alternativen zu ermöglichen. Weitere Informationen hierzu finden Sie unter MSBuild Conditional Constructs.

Beispiel

Im folgenden Projekt wird das Choose-Element verwendet, um die Eigenschaftswerte in den When-Elementen auszuwählen, die festgelegt werden sollen. Wenn die Condition-Attribute beider When-Elemente false ergeben, werden die Eigenschaftswerte im Otherwise-Element festgelegt.

<Project
    xmlns="https://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>

Siehe auch

Referenz

MSBuild Conditional Constructs

Konzepte

Referenz zum MSBuild-Projektdateischema