When 요소(MSBuild)
Choose 요소가 선택할 수 있는 코드 블록을 지정합니다.
<When Condition="'StringA'=='StringB'">
<PropertyGroup>... </PropertyGroup>
<ItemGroup>... </ItemGroup>
<Choose>... </Choose>
</When>
특성 및 요소
다음 단원에서는 특성, 자식 요소 및 부모 요소에 대해 설명합니다.
특성
특성 |
설명 |
---|---|
Condtition |
필수 특성입니다. 확인할 조건입니다. 자세한 내용은 MSBuild 조건을 참조하십시오. |
자식 요소
요소 |
설명 |
---|---|
선택적 요소입니다. 자식 요소를 확인하여, 실행할 코드 섹션을 하나 선택합니다. When 요소에 Choose 요소가 0개 이상 있을 수 있습니다. |
|
선택적 요소입니다. 사용자 정의 Item 요소 집합이 들어 있습니다. When 요소에 ItemGroup 요소가 0개 이상 있을 수 있습니다. |
|
선택적 요소입니다. 사용자 정의 Property 요소 집합이 들어 있습니다. When 요소에는 PropertyGroup 요소가 0개 이상 있을 수 있습니다. |
부모 요소
요소 |
설명 |
---|---|
자식 요소를 확인하여, 실행할 코드 섹션을 하나 선택합니다. |
설명
Condition 특성이 true로 확인되면 When 요소의 자식 ItemGroup 및 PropertyGroup 요소가 실행되고 이후의 모든 When 요소가 생략됩니다.
Choose, When 및 Otherwise 요소는 여러 가지 가능한 경우의 수 중에서 실행할 코드 하나를 선택할 수 있도록 함께 사용됩니다. 자세한 내용은 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>