共用方式為


When 項目 (MSBuild)

指定可能的程式碼區塊,供 Choose 項目選取。

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

屬性和項目

下列章節會說明屬性、子項目和父項目。

屬性

屬性

描述

條件

必要屬性。

要評估的條件。 如需詳細資訊,請參閱MSBuild 條件

子項目

元素

描述

Choose

選擇性項目。

評估子項目,選取要執行的其中一個程式碼區段。 When 項目中可能有零個或多個 Choose 項目。

ItemGroup

選擇性項目。

包含一組使用者定義的 Item 項目。 When 項目中可能有零個或多個 ItemGroup 項目。

PropertyGroup

選擇性項目。

包含一組使用者定義的 Property 項目。 When 項目中可能有零或多個 PropertyGroup 項目。

父項目

元素

描述

Choose 項目 (MSBuild)

評估子項目,選取要執行的其中一個程式碼區段。

備註

如果 Condition 屬性評估為 true,則 When 項目的 ItemGroupPropertyGroup 子項目便會執行,並略過所有後續的 When 項目。

ChooseWhenOtherwise 項目會一起使用,以便從數個可能的選擇項目中,選取一個要執行的程式碼區段。 如需詳細資訊,請參閱MSBuild 條件式建構

範例

下列專案使用 Choose 項目,選取 When 項目中要設定的屬性值集。 如果兩個 When 項目的 Condition 屬性 (Aattribute) 都評估為 false,則表示 Otherwise 項目中的屬性 (Property) 值已設定。

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

請參閱

參考

MSBuild 條件式建構

概念

MSBuild 專案檔案結構描述參考