Pewarisan properti dalam proyek Visual Studio
Sistem proyek asli Visual Studio didasarkan pada MSBuild. MSBuild mendefinisikan format dan aturan file untuk membangun proyek dalam bentuk apa pun. Ini mengelola sebagian besar kompleksitas pembangunan untuk beberapa konfigurasi dan platform. Anda akan merasa berguna untuk memahami cara kerjanya. Itu sangat penting jika Anda ingin menentukan konfigurasi kustom. Atau, untuk membuat kumpulan properti yang dapat digunakan kembali yang dapat Anda bagikan dan impor ke beberapa proyek.
File .vcxproj, file .props, dan file .targets
Properti proyek disimpan dalam beberapa file. Beberapa disimpan langsung dalam .vcxproj
file proyek. Yang lain berasal dari file atau .props
lain .targets
yang diimpor file proyek dan yang menyediakan nilai default. Anda akan menemukan file proyek Visual Studio 2015 di folder khusus lokal di bawah direktori dasar, %ProgramFiles(x86)%\MSBuild\Microsoft.Cpp\v4.0\v140
.
Properti proyek disimpan dalam beberapa file. Beberapa disimpan langsung dalam .vcxproj
file proyek. Yang lain berasal dari file atau .props
lain .targets
yang diimpor file proyek dan yang menyediakan nilai default. Anda akan menemukan file proyek Visual Studio 2017 di folder khusus lokal di bawah direktori dasar, %VSINSTALLDIR%Common7\IDE\VC\VCTargets\
.
Properti proyek disimpan dalam beberapa file. Beberapa disimpan langsung dalam .vcxproj
file proyek. Yang lain berasal dari file atau .props
lain .targets
yang diimpor file proyek dan yang menyediakan nilai default. Anda akan menemukan file proyek Visual Studio di folder khusus lokal di bawah direktori dasar, %VSINSTALLDIR%\MSBuild\Microsoft\VC\<version>
. <version>
khusus untuk versi Visual Studio. Ini v160
untuk Visual Studio 2019.
Properti juga disimpan dalam file kustom .props
apa pun yang mungkin Anda tambahkan ke proyek Anda sendiri. Kami sangat menyarankan Agar Anda TIDAK mengedit file-file tersebut secara manual. Sebagai gantinya, gunakan halaman properti di IDE untuk memodifikasi semua properti, terutama yang berpartisipasi dalam warisan, kecuali Anda memiliki pemahaman mendalam tentang MSBuild dan .vcxproj
file.
Seperti yang ditunjukkan sebelumnya, properti yang sama untuk konfigurasi yang sama dapat diberi nilai yang berbeda dalam file yang berbeda ini. Saat Anda membangun proyek, mesin MSBuild mengevaluasi file proyek dan semua file yang diimpor dalam urutan yang ditentukan dengan baik yang dijelaskan nanti. Saat setiap file dievaluasi, nilai properti apa pun yang ditentukan dalam file tersebut akan mengambil alih nilai yang ada. Nilai apa pun yang tidak ditentukan diwariskan dari file yang dievaluasi sebelumnya. Saat Anda mengatur properti dengan halaman properti, penting juga untuk memperhatikan tempat Anda mengaturnya. Jika Anda mengatur properti ke "X" dalam .props
file, tetapi properti diatur ke "Y" dalam file proyek, maka proyek akan dibangun dengan properti yang diatur ke "Y". Jika properti yang sama diatur ke "Z" pada item proyek, seperti .cpp
file, maka mesin MSBuild akan menggunakan nilai "Z".
Berikut adalah pohon pewarisan dasar:
Pengaturan default dari Toolset CPP MSBuild (
Microsoft.Cpp.Default.props
file di direktori dasar, yang diimpor oleh.vcxproj
file.)Lembar properti
.vcxproj
arsip. (File ini dapat mengambil alih pengaturan lembar default dan properti.)Metadata item
Tip
Pada halaman properti, properti dalam huruf tebal didefinisikan dalam konteks saat ini. Properti dalam font normal diwariskan.
Menampilkan file proyek yang diperluas dengan semua nilai yang diimpor
Terkadang berguna untuk melihat file yang diperluas untuk menentukan bagaimana nilai properti tertentu diwariskan. Untuk melihat versi yang diperluas, masukkan perintah berikut ini di prompt perintah Visual Studio. (Ubah nama file tempat penampung menjadi nama yang ingin Anda gunakan.)
msbuild /pp:temp.txt myapp.vcxproj
File proyek yang diperluas bisa besar dan sulit dipahami kecuali Anda terbiasa dengan MSBuild. Berikut adalah struktur dasar file proyek:
Properti proyek dasar, yang tidak diekspos dalam IDE.
Microsoft.cpp.default.props
Impor , yang mendefinisikan beberapa properti dasar dan independen toolset.Properti Konfigurasi Global (diekspos sebagai properti default PlatformToolset dan Project di halaman Konfigurasi Umum . Properti ini menentukan kumpulan alat dan lembar properti intrinsik mana yang diimpor di
Microsoft.cpp.props
langkah berikutnya.Microsoft.cpp.props
Impor , yang mengatur sebagian besar default proyek.Impor semua lembar properti, termasuk
.user
file. Lembar properti ini dapat mengambil alih semuanya kecuali properti default PlatformToolset dan Project .Properti konfigurasi proyek lainnya. Nilai-nilai ini dapat mengambil alih apa yang diatur dalam lembar properti.
Item (file) bersama dengan metadatanya. Item ini selalu merupakan kata terakhir dalam aturan evaluasi MSBuild, bahkan jika terjadi sebelum properti dan impor lainnya.
Untuk informasi selengkapnya, lihat Properti MSBuild.
Konfigurasi build
Konfigurasi hanyalah sekelompok properti arbitrer yang diberi nama. Visual Studio menyediakan konfigurasi Debug dan Rilis. Setiap mengatur berbagai properti dengan tepat untuk build debug atau build rilis. Anda dapat menggunakan Configuration Manager untuk menentukan konfigurasi kustom. Ini adalah cara yang mudah untuk mengelompokkan properti untuk rasa build tertentu.
Untuk mendapatkan ide konfigurasi build yang lebih baik, buka Pengelola Properti. Anda dapat membukanya dengan memilih Tampilkan > Pengelola Properti atau Lihat > Pengelola Properti Windows > Lainnya, bergantung pada pengaturan Anda. Pengelola Properti memiliki simpul untuk setiap konfigurasi dan pasangan platform dalam proyek. Di bawah masing-masing simpul ini adalah simpul untuk lembar properti (.props
file) yang mengatur beberapa properti tertentu untuk konfigurasi tersebut.
Misalnya, Anda bisa masuk ke panel Umum di Halaman Properti. Ubah properti Set Karakter menjadi "Tidak Diatur" alih-alih "Gunakan Unicode", lalu klik OK. Manajer Properti sekarang tidak menampilkan lembar properti Dukungan Unicode. Ini dihapus untuk konfigurasi saat ini, tetapi masih ada untuk konfigurasi lain.
Untuk informasi selengkapnya tentang Pengelola Properti dan lembar properti, lihat Berbagi atau menggunakan kembali pengaturan proyek Visual Studio C++.
Tip
File .user
adalah fitur warisan. Kami menyarankan agar Anda menghapusnya, untuk menjaga properti dikelompokkan dengan benar sesuai dengan konfigurasi dan platform.