Membangun file sumber yang sama dengan opsi yang berbeda
Saat membuat proyek, Anda sering mengompilasi komponen yang sama dengan opsi build yang berbeda. Misalnya, Anda dapat membuat build debug dengan informasi simbol atau build rilis tanpa informasi simbol tetapi dengan pengoptimalan diaktifkan. Atau Anda dapat membangun proyek untuk dijalankan pada platform tertentu, seperti x86 atau x64. Dalam semua kasus ini, sebagian besar opsi build tetap sama; hanya beberapa opsi yang diubah untuk mengontrol konfigurasi build. Dengan MSBuild, Anda menggunakan properti dan kondisi untuk membuat konfigurasi build yang berbeda.
Menggunakan properti untuk mengontrol pengaturan build
Elemen Property
menentukan variabel yang direferensikan beberapa kali dalam file proyek, seperti lokasi direktori sementara, atau untuk mengatur nilai untuk properti yang digunakan dalam beberapa konfigurasi, seperti build Debug dan build Rilis. Untuk informasi selengkapnya tentang properti, lihat Properti MSBuild.
Anda dapat menggunakan properti untuk mengubah konfigurasi build tanpa harus mengubah file proyek. Atribut Condition
Property
elemen dan PropertyGroup
elemen memungkinkan Anda mengubah nilai properti. Untuk informasi selengkapnya tentang kondisi MSBuild, lihat Kondisi.
Untuk mengatur grup properti yang bergantung pada properti lain
Gunakan atribut
Condition
dalamPropertyGroup
elemen yang mirip dengan yang berikut ini:<PropertyGroup Condition="'$(Flavor)'=='DEBUG'"> <DebugType>full</DebugType> <Optimize>no</Optimize> </PropertyGroup>
Untuk menentukan properti yang bergantung pada properti lain
Gunakan atribut
Condition
dalamProperty
elemen yang mirip dengan yang berikut ini:<DebugType Condition="'$(Flavor)'=='DEBUG'">full</DebugType>
Tentukan properti pada baris perintah
Setelah file proyek Anda ditulis untuk menerima beberapa konfigurasi, Anda harus memiliki kemampuan untuk mengubah konfigurasi tersebut setiap kali Anda membangun proyek Anda. MSBuild menyediakan kemampuan ini dengan memungkinkan properti ditentukan pada baris perintah menggunakan sakelar -properti atau -p.
Untuk mengatur properti proyek di baris perintah
Gunakan sakelar -properti dengan nilai properti dan properti. Contohnya:
msbuild file.proj -property:Flavor=Debug
atau
Msbuild file.proj -p:Flavor=Debug
Untuk menentukan lebih dari satu properti proyek di baris perintah
Gunakan sakelar -properti atau -p beberapa kali dengan nilai properti dan properti, atau gunakan satu -properti atau sakelar -p dan pisahkan beberapa properti dengan titik koma (;). Contohnya:
msbuild file.proj -p:Flavor=Debug;Platform=x86
atau
msbuild file.proj -p:Flavor=Debug -p:Platform=x86
Variabel lingkungan juga diperlakukan sebagai properti dan secara otomatis dimasukkan oleh MSBuild. Untuk informasi selengkapnya tentang menggunakan variabel lingkungan, lihat Cara: Menggunakan variabel lingkungan dalam build.
Nilai properti yang ditentukan pada baris perintah lebih diutamakan daripada nilai apa pun yang diatur untuk properti yang sama dalam file proyek, dan nilai tersebut dalam file proyek lebih diutamakan daripada nilai dalam variabel lingkungan.
Anda dapat mengubah perilaku ini dengan menggunakan atribut
TreatAsLocalProperty
dalam tag proyek. Untuk nama properti yang tercantum dengan atribut tersebut, nilai properti yang ditentukan pada baris perintah tidak lebih diutamakan daripada nilai dalam file proyek. Anda dapat menemukan contoh nanti dalam topik ini.
Contoh 1
Contoh kode berikut, proyek "Halo Dunia", berisi dua grup properti baru yang dapat digunakan untuk membuat build Debug dan build Rilis.
Untuk membangun versi debug proyek ini, ketik:
msbuild consolehwcs1.proj -p:flavor=debug
Untuk membangun versi ritel proyek ini, ketik:
msbuild consolehwcs1.proj -p:flavor=retail
<Project DefaultTargets = "Compile"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- Sets the default flavor if an environment variable called
Flavor is not set or specified on the command line -->
<PropertyGroup>
<Flavor Condition="'$(Flavor)'==''">DEBUG</Flavor>
</PropertyGroup>
<!-- Define the DEBUG settings -->
<PropertyGroup Condition="'$(Flavor)'=='DEBUG'">
<DebugType>full</DebugType>
<Optimize>no</Optimize>
</PropertyGroup>
<!-- Define the RETAIL settings -->
<PropertyGroup Condition="'$(Flavor)'=='RETAIL'">
<DebugType>pdbonly</DebugType>
<Optimize>yes</Optimize>
</PropertyGroup>
<!-- Set the application name as a property -->
<PropertyGroup>
<appname>HelloWorldCS</appname>
</PropertyGroup>
<!-- Specify the inputs by type and file name -->
<ItemGroup>
<CSFile Include = "consolehwcs1.cs"/>
</ItemGroup>
<Target Name = "Compile">
<!-- Run the Visual C# compilation using input files
of type CSFile -->
<CSC Sources = "@(CSFile)"
DebugType="$(DebugType)"
Optimize="$(Optimize)"
OutputAssembly="$(appname).exe" >
<!-- Set the OutputAssembly attribute of the CSC
task to the name of the executable file that is
created -->
<Output TaskParameter="OutputAssembly"
ItemName = "EXEFile" />
</CSC>
<!-- Log the file name of the output file -->
<Message Text="The output file is @(EXEFile)"/>
</Target>
</Project>
Contoh 2
Contoh berikut menggambarkan cara menggunakan TreatAsLocalProperty
atribut. Properti Color
memiliki nilai Blue
dalam file proyek dan Green
di baris perintah. Dengan TreatAsLocalProperty="Color"
dalam tag proyek, properti baris perintah (Green
) tidak mengganti properti yang ditentukan dalam file proyek (Blue
).
Untuk membangun proyek, masukkan perintah berikut:
msbuild colortest.proj -t:go -property:Color=Green
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0" TreatAsLocalProperty="Color">
<PropertyGroup>
<Color>Blue</Color>
</PropertyGroup>
<Target Name="go">
<Message Text="Color: $(Color)" />
</Target>
</Project>
<!--
Output with TreatAsLocalProperty="Color" in project tag:
Color: Blue
Output without TreatAsLocalProperty="Color" in project tag:
Color: Green
-->
Konten terkait
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