Bagikan melalui


Makro umum untuk perintah dan properti MSBuild

Bergantung pada opsi penginstalan Anda, Visual Studio dapat membuat ratusan makro tersedia untuk Anda dalam proyek Visual Studio berbasis .vcxproj MSBuild. Makro sesuai dengan properti MSBuild yang diatur secara default, atau di atau .props.targets file, atau di pengaturan proyek Anda. Anda dapat menggunakan makro ini di mana saja dalam kotak dialog Halaman Properti proyek tempat string diterima. Makro ini tidak peka huruf besar/kecil.

Menampilkan properti dan makro saat ini

Untuk menampilkan semua makro yang saat ini tersedia, buka halaman properti proyek dari menu utama dengan memilih Properti Proyek>. Dalam dialog Halaman Properti, pilih entri yang memiliki makro di dalamnya. Anda dapat mengenali makro dengan tanda dolar dan tanda kurung yang mengelilingi namanya.

Misalnya, di panel kiri, pilih Properti>Konfigurasi VC++ Direktori, lalu di panel kanan, pilih Sertakan direktori. Nilai untuk Sertakan direktori adalah $(VC_IncludePath);$(WindowsSDK_IncludePath);.

Tanda dolar dan tanda kurung di sekitar kedua nilai ini menunjukkan bahwa nilai tersebut adalah makro. Perluasan kedua makro tersebut menetapkan direktori include untuk dicari.

Pilih Sertakan Direktori dan dropdown muncul di akhir baris. Pilih tombol dropdown, lalu pilih Edit. Dalam kotak dialog Sertakan Direktori yang muncul, pilih tombol Makro>> .

Yang memperluas dialog untuk menampilkan kumpulan properti dan makro saat ini yang terlihat oleh Visual Studio, bersama dengan nilai saat ini untuk masing-masing properti. Untuk informasi selengkapnya, lihat bagian Menentukan Nilai yang Ditentukan Pengguna dari referensi halaman properti proyek C++.

Screenshot of the Visual Studio Include Directories dialog after choosing the Macros button.

Di sebelah kanan adalah daftar makro Visual Studio seperti $(AllowLocalNetworkLoopback). Panel kiri memperlihatkan nilai properti sertakan direktori yang dievaluasi. Panel bawah memperlihatkan makro mana yang diperluas, jika ada, untuk menghasilkan nilai properti sertakan direktori. Karena makro Sertakan Direktori adalah kombinasi dari dua makro lainnya, $(VC_IncludePath) dan $(WindowsSDK_IncludePath), panel bawah, berlabel Nilai yang diwariskan, mencantumkan dua makro tersebut.

Daftar makro umum

Tabel ini menjelaskan subset makro yang umum digunakan; ada banyak lagi yang tidak tercantum di sini. Buka dialog Makro untuk melihat semua properti dan nilainya saat ini dalam proyek Anda. Untuk detail tentang bagaimana definisi properti MSBuild dibuat dan digunakan sebagai makro dalam .propsfile , , .targetsdan .vcxproj , lihat Properti MSBuild.

Makro Deskripsi
$(Configuration) Nama konfigurasi proyek saat ini, misalnya, "Debug".
$(DevEnvDir) Direktori penginstalan Visual Studio (didefinisikan sebagai drive + path); termasuk garis miring terbelakang (\).
$(FrameworkDir) Direktori tempat .NET Framework diinstal.
$(FrameworkSDKDir) Direktori tempat Anda menginstal .NET Framework. .NET Framework mungkin telah diinstal sebagai bagian dari Visual Studio atau secara terpisah.
$(FrameworkVersion) Versi .NET Framework yang digunakan oleh Visual Studio. Dikombinasikan dengan $(FrameworkDir), jalur lengkap ke versi .NET Framework yang digunakan oleh Visual Studio.
$(FxCopDir) Jalur ke file fxcop.cmd. File fxcop.cmd tidak diinstal di semua edisi Visual Studio.
$(IntDir) Jalur ke direktori yang ditentukan untuk file perantara. Jika ini adalah jalur relatif, file perantara masuk ke jalur ini ditambahkan ke direktori proyek. Jalur ini harus memiliki garis miring terbelakang (\). Ini diselesaikan ke nilai untuk properti Direktori Menengah. Jangan gunakan $(OutDir) untuk menentukan properti ini.
$(OutDir) Jalur ke direktori file output. Jika ini adalah jalur relatif, file output masuk ke jalur ini ditambahkan ke direktori proyek. Jalur ini harus memiliki garis miring terbelakang (\). Ini diselesaikan ke nilai untuk properti Direktori Output. Jangan gunakan $(IntDir) untuk menentukan properti ini.
$(Platform) Nama platform proyek saat ini, misalnya, "Win32".
$(PlatformShortName) Nama pendek arsitektur saat ini, misalnya, "x86" atau "x64".
$(ProjectDir) Direktori proyek (didefinisikan sebagai drive + jalur); termasuk garis miring terbelakang (\).
$(ProjectExt) Ekstensi file proyek. Ini termasuk '.' sebelum ekstensi file.
$(ProjectFileName) Nama file proyek (didefinisikan sebagai nama dasar + ekstensi file).
$(ProjectName) Nama dasar proyek.
$(ProjectPath) Nama jalur absolut proyek (didefinisikan sebagai drive + jalur + nama dasar + ekstensi file).
$(PublishDir) Lokasi output untuk target penerbitan; termasuk garis miring terbelakang (\). Default ke $(OutDir)app.publish\ folder.
$(RemoteMachine) Atur ke nilai properti Komputer Jarak Jauh pada halaman properti Debug. Untuk informasi selengkapnya, lihat Mengubah Project Pengaturan untuk Konfigurasi Debug C/C++.
$(RootNameSpace) Namespace layanan, jika ada, yang berisi aplikasi.
$(SolutionDir) Direktori solusi (didefinisikan sebagai drive + path); termasuk garis miring terbelakang (\). Ditentukan hanya saat membangun solusi di IDE.
$(SolutionExt) Ekstensi file solusi. Ini termasuk '.' sebelum ekstensi file. Ditentukan hanya saat membangun solusi di IDE.
$(SolutionFileName) Nama file solusi (didefinisikan sebagai nama dasar + ekstensi file). Ditentukan hanya saat membangun solusi di IDE.
$(SolutionName) Nama dasar solusi. Ditentukan hanya saat membangun solusi di IDE.
$(SolutionPath) Nama jalur absolut solusi (didefinisikan sebagai drive + jalur + nama dasar + ekstensi file). Ditentukan hanya saat membangun solusi di IDE.
$(TargetDir) Direktori file output utama untuk build (didefinisikan sebagai drive + path); termasuk garis miring terbelakang (\).
$(TargetExt) Ekstensi file dari file output utama untuk build. Ini termasuk '.' sebelum ekstensi file.
$(TargetFileName) Nama file file output utama untuk build (didefinisikan sebagai nama dasar + ekstensi file).
$(TargetName) Nama dasar file output utama untuk build.
$(TargetPath) Nama jalur absolut dari file output utama untuk build (didefinisikan sebagai drive + jalur + nama dasar + ekstensi file).
$(VCInstallDir) Direktori yang berisi konten C++ penginstalan Visual Studio Anda. Properti ini berisi versi toolset Microsoft C++ (MSVC) yang ditargetkan, yang mungkin berbeda dengan host Visual Studio. Misalnya, saat membangun dengan $(PlatformToolset) = v140, $(VCInstallDir) berisi jalur ke penginstalan Visual Studio 2015.
$(VSInstallDir) Direktori tempat Anda menginstal Visual Studio. Properti ini berisi versi toolset Visual Studio yang ditargetkan, yang mungkin berbeda dengan host Visual Studio. Misalnya, saat membangun dengan $(PlatformToolset) = v110, $(VSInstallDir) berisi jalur ke penginstalan Visual Studio 2012.
$(WebDeployPath) Jalur relatif dari akar penyebaran web ke tempat output proyek berada.
$(WebDeployRoot) Jalur absolut ke lokasi <localhost>. Contohnya, c:\inetpub\wwwroot.

Makro usang

Sistem build untuk C++ diubah secara signifikan antara Visual Studio 2008 dan Visual Studio 2010. Banyak makro yang digunakan dalam jenis proyek sebelumnya berubah menjadi yang baru. Makro ini tidak lagi digunakan atau digantikan oleh satu atau beberapa properti atau nilai makro metadata item (%(item-name)). Alat migrasi dapat memperbarui makro yang ditandai "dimigrasikan". Jika proyek yang berisi makro dimigrasikan dari Visual Studio 2008 atau yang lebih lama ke Visual Studio 2010, Visual Studio mengonversi makro ke makro saat ini yang setara. Versi Visual Studio yang lebih baru tidak dapat mengonversi proyek dari Visual Studio 2008 dan yang lebih lama ke jenis proyek baru. Anda harus mengonversi proyek-proyek ini dalam dua langkah; pertama-tama konversikan ke Visual Studio 2010, lalu konversikan hasilnya ke versi Visual Studio Anda yang lebih baru. Untuk informasi selengkapnya, lihat Gambaran umum potensi masalah peningkatan.

Makro Deskripsi
$(InputDir) (Dimigrasikan.) Direktori file input (didefinisikan sebagai drive + path); termasuk garis miring terbelakang (\). Jika proyek adalah input, maka makro ini setara dengan $(ProjectDir).
$(InputExt) (Dimigrasikan.) Ekstensi file dari file input. Ini termasuk '.' sebelum ekstensi file. Jika proyek adalah input, maka makro ini setara dengan $(ProjectExt). Untuk file sumber, setara dengan %(Extension).
$(InputFileName) (Dimigrasikan.) Nama file file input (didefinisikan sebagai nama dasar + ekstensi file). Jika proyek adalah input, maka makro ini setara dengan $(ProjectFileName). Untuk file sumber, setara dengan %(Identity).
$(InputName) (Dimigrasikan.) Nama dasar file input. Jika proyek adalah input, maka makro ini setara dengan $(ProjectName). Untuk file sumber, setara dengan %(Filename).
$(InputPath) (Dimigrasikan.) Nama jalur absolut file input (didefinisikan sebagai drive + jalur + nama dasar + ekstensi file). Jika proyek adalah input, maka makro ini setara dengan $(ProjectPath). Untuk file sumber, setara dengan %(FullPath).
$(ParentName) Nama item yang berisi item proyek ini. Makro ini adalah nama folder induk, atau nama proyek.
$(SafeInputName) Nama file sebagai nama kelas yang valid, ekstensi file minus. Properti ini tidak memiliki yang sama persis.
$(SafeParentName) Nama induk langsung dalam format nama yang valid. Misalnya, formulir adalah induk .resx file. Properti ini tidak memiliki yang sama persis.
$(SafeRootNamespace) Nama namespace tempat wizard proyek harus menambahkan kode. Nama namespace ini hanya berisi karakter yang akan diizinkan dalam pengidentifikasi C++ yang valid. Properti ini tidak memiliki yang sama persis.

Baca juga

Proyek Visual Studio - C++
Panduan porting dan peningkatan Visual C++
Gambaran umum potensi masalah peningkatan
Metadata item terkenal MSBuild