다음을 통해 공유


When 요소(MSBuild)

Choose 요소가 선택할 수 있는 코드 블록을 지정합니다.

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

특성 및 요소

다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.

특성

특성

설명

조건

필수 특성입니다.

확인할 조건입니다. 자세한 내용은 MSBuild 조건을 참조하십시오.

자식 요소

요소

설명

Choose

선택적 요소입니다.

자식 요소를 확인하여, 실행할 코드 섹션을 하나 선택합니다. When 요소에 Choose 요소가 0개 이상 있을 수 있습니다.

ItemGroup

선택적 요소입니다.

사용자 정의 Item 요소 집합이 들어 있습니다. When 요소에 ItemGroup 요소가 0개 이상 있을 수 있습니다.

PropertyGroup

선택적 요소입니다.

사용자 정의 Property 요소 집합이 들어 있습니다. When 요소에는 PropertyGroup 요소가 0개 이상 있을 수 있습니다.

부모 요소

요소

설명

Choose 요소(MSBuild)

자식 요소를 확인하여, 실행할 코드 섹션을 하나 선택합니다.

설명

Condition 특성이 true로 확인되면 When 요소의 자식 ItemGroupPropertyGroup 요소가 실행되고 이후의 모든 When 요소가 생략됩니다.

Choose, WhenOtherwise 요소는 여러 가지 가능한 경우의 수 중에서 실행할 코드 하나를 선택할 수 있도록 함께 사용됩니다. 자세한 내용은 MSBuild 조건부 구문을 참조하십시오.

예제

다음 프로젝트에서는 설정할 When 요소의 속성 값 집합을 선택하기 위해 Choose 요소를 사용합니다. 두 When 요소의 Condition 특성이 모두 false로 확인되면 Otherwise 요소의 속성 값이 설정됩니다.

<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 프로젝트 파일 스키마 참조