Konstruksi kondisional MSBuild
MSBuild menyediakan mekanisme untuk salah satu/atau pemrosesan dengan elemen Pilih, Kapan, dan Sebaliknya.
Menggunakan elemen Pilih
Elemen Choose
berisi serangkaian When
elemen dengan Condition
atribut yang diuji secara berurutan dari atas ke bawah hingga dievaluasi ke true
. Jika lebih dari satu When
elemen dievaluasi ke true
, hanya elemen pertama yang digunakan. Elemen Otherwise
, jika ada, akan dievaluasi jika tidak ada kondisi pada elemen When
yang dievaluasi ke true
.
Elemen Choose
dapat digunakan sebagai elemen turunan dari elemen Project
, When
dan Otherwise
. Elemen When
dan Otherwise
dapat memiliki elemen ItemGroup
, PropertyGroup
, atau Choose
turunan.
Contoh
Contoh berikut menggunakan elemen Choose
dan When
untuk pemrosesan either/or. Properti dan item untuk proyek diatur tergantung pada nilai properti Configuration
.
<Project xmlns="http://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>
</Choose>
<!-- Rest of Project -->
</Project>
Dalam contoh ini, kondisi pada konstanta DEFINED_CONSTANT
pengkompilasi digunakan. Ini termasuk dalam DefinedConstants
properti. Ekspresi reguler digunakan untuk mencocokkan konstanta yang tepat dalam daftar yang dipisahkan titik koma.
<Choose>
<When Condition="$([System.Text.RegularExpressions.Regex]::IsMatch(
$(DefineConstants), '^(.*;)*DEFINED_CONSTANT(;.*)*$'))">
<!-- When DEFINED_CONSTANT is defined. -->
</When>
<!-- other conditions -->
</Choose>
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk