Freigeben über


When-Element (MSBuild)

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

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

Attribute und Elemente

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

Attribute

Attribut

Description

Bedingung

Erforderliches Attribut.

Die auszuwertende Bedingung. Weitere Informationen finden Sie unter MSBuild-Bedingungen.

Untergeordnete Elemente

Element

Description

Choose

Optionales Element.

Wertet untergeordnete Elemente aus, um einen Codeabschnitt auszuwählen, der ausgeführt werden soll. Es kann keine oder mehrere Choose-Elemente in einem When-Element geben.

ItemGroup

Optionales Element.

Enthält benutzerdefinierte Item-Elemente. Es kann keine oder mehrere ItemGroup-Elemente in einem When-Element geben.

PropertyGroup

Optionales Element.

Enthält benutzerdefinierte Property-Elemente. Es kann keine oder mehrere PropertyGroup-Elemente in einem When-Element geben.

Übergeordnete Elemente

Element

Description

Choose-Element (MSBuild)

Wertet untergeordnete Elemente aus, um einen Codeabschnitt auszuwählen, der ausgeführt werden soll.

Hinweise

Wenn das Condition-Attribut true ergibt, werden das untergeordnete ItemGroup-Element und das untergeordnete PropertyGroup-Element des When-Elements ausgeführt, und alle folgenden When-Elemente werden übersprungen.

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