Bagikan melalui


Referensi baris perintah MSBuild

Saat menggunakan MSBuild.exe untuk membangun file solusi atau proyek, Anda dapat menyertakan beberapa switch untuk menentukan berbagai aspek proses.

Setiap sakelar tersedia dalam dua bentuk: -switch dan /switch. Dokumentasi hanya memperlihatkan formulir -switch. Sakelar tidak peka huruf besar/kecil. Jika Anda menjalankan MSBuild dari shell selain perintah Windows, daftar argumen ke switch (dipisahkan oleh titik koma atau koma) mungkin memerlukan tanda kutip tunggal atau ganda untuk memastikan bahwa daftar diteruskan ke MSBuild, bukan ditafsirkan oleh shell.

Perintah .NET CLI membuat dotnet, dotnet publish, dotnet msbuild , dan perintah terkait meneruskan sakelar ini ke MSBuild, sehingga referensi ini berlaku saat Anda menggunakan perintah tersebut; namun dotnet run tidak.

Sintaks

MSBuild.exe [Switches] [ProjectFile]

Argumen

Argumen Deskripsi
ProjectFile Membangun target dalam file proyek yang Anda tentukan. Jika Anda tidak menentukan file proyek, MSBuild akan menelusuri direktori yang berfungsi saat ini untuk menemukan ekstensi nama file yang berakhiran proj dan menggunakan file tersebut. Anda juga dapat menentukan file solusi Visual Studio untuk argumen ini.

Sakelar

Kolom pertama dalam tabel berikut ini memperlihatkan bentuk panjang dan pendek dari setiap sakelar. Kedua formulir setara.

Kurung [] siku menunjukkan bagian opsional, dan kurung kurawal {}menunjukkan nilai yang disediakan pengguna.

Sakelar Deskripsi
-detailedSummary[:{True or False}]

-ds[:{True or False}]
Jika True, tampilkan informasi mendetail di akhir log pembangunan tentang konfigurasi yang dibangun dan cara konfigurasi dijadwalkan ke node.
-getItem:{itemName,...} Tuliskan nilai item atau item setelah evaluasi, tanpa mengeksekusi build, atau jika -targets opsi atau -getTargetResult opsi digunakan, tulis nilai setelah build.
-getProperty:{propertyName,...} Tuliskan nilai properti atau properti setelah evaluasi, tanpa mengeksekusi build, atau jika -targets opsi atau -getTargetResult opsi digunakan, tulis nilai setelah build.
-getTargetResult:{targetName,...} Tuliskan nilai output dari target yang ditentukan.
-graphBuild[:{True or False}]

-graph[:{True or False}]
Menyebabkan MSBuild menyusun dan membangun grafik proyek. Penyusunan grafik melibatkan identifikasi referensi proyek untuk membentuk dependensi. Pembangunan grafik tersebut melibatkan upaya pembangunan referensi proyek sebelum pembangunan proyek yang menggunakannya sebagai referensi, berbeda dengan penjadwalan MSBuild tradisional. Memerlukan MSBuild 16 atau yang lebih baru.
-help

/? atau -h
Menampilkan informasi penggunaan. Perintah berikut adalah contohnya:

msbuild.exe -?
-ignoreProjectExtensions: {extensions}

-ignore: {extensions}
Mengabaikan ekstensi yang ditentukan saat menentukan file proyek yang akan dibangun. Gunakan titik koma atau koma untuk memisahkan beberapa ekstensi, seperti yang ditunjukkan contoh berikut:

-ignoreprojectextensions:.vcproj,.sln
-inputResultsCaches[:{cacheFile; ...}]

-irc[:{cacheFile; ...}]
Daftar file cache input yang dipisahkan titik koma yang akan dibaca oleh MSBuild. Jika -isolateProjects diatur ke False, ini mengaturnya ke True.
-interactive[:{True or False}] Menunjukkan bahwa tindakan dalam build diizinkan untuk berinteraksi dengan pengguna. Jangan gunakan argumen ini dalam skenario otomatis di mana interaktivitas tidak diharapkan. Menentukan -interactive sama dengan menentukan -interactive:true. Gunakan parameter ini untuk mengambil alih nilai yang berasal dari file respons.
-isolateProjects[:{True, MessageUponIsolationViolation, False}]

-isolate[:{True, MessageUponIsolationViolation, False}]
Menyebabkan MSBuild membangun setiap proyek dalam isolasi. Ketika diatur ke MessageUponIsolationViolation (atau bentuk Messagependeknya ), hanya hasil dari target tingkat atas yang diserialisasikan jika -outputResultsCache sakelar disediakan. Opsi ini adalah untuk mengurangi kemungkinan target yang melanggar isolasi pada proyek dependensi menggunakan status yang salah karena dependensinya pada target cache yang efek sampingnya tidak akan diperhitungkan. (Misalnya, definisi properti.) Mode ini lebih ketat, karena mengharuskan grafik proyek dapat ditemukan secara statis pada waktu evaluasi, tetapi dapat meningkatkan penjadwalan dan mengurangi overhead memori saat membangun serangkaian proyek yang besar.
-lowPriority[:{True or False}]

-low[:{True or False}]
Menyebabkan MSBuild berjalan pada prioritas proses rendah. Menentukan -lowPriority sama dengan menentukan -lowPriority:True.
-maxCpuCount[:{number}]

-m[:{number}]
Menentukan jumlah maksimum proses bersamaan yang digunakan saat melakukan pembangunan. Jika Anda tidak menyertakan switch ini, nilai defaultnya adalah 1. Jika Anda menyertakan sakelar ini tanpa menentukan nilai, MSBuild menggunakan hingga jumlah prosesor di komputer. Untuk informasi selengkapnya, lihat Membangun beberapa proyek secara paralel.

Contoh berikut memerintahkan MSBuild untuk melakukan pembangunan dengan tiga proses MSBuild, sehingga tiga proyek dapat dibangun secara bersamaan:

msbuild myproject.proj -maxcpucount:3
-noAutoResponse

-noautorsp
Jangan sertakan file MSBuild.rsp atau Directory.Build.rsp secara otomatis.
-nodeReuse:{value}

-nr:{value}
Aktifkan atau nonaktifkan penggunaan kembali node MSBuild. Anda bisa menentukan nilai berikut:

- Benar. Node akan tetap ada setelah build selesai sehingga build berikutnya dapat menggunakan node tersebut (default).
- Salah. Node hilang setelah build selesai.

Node merespons sesuai dengan proyek yang dijalankan. Jika Anda menyertakan -maxcpucount sakelar, beberapa simpul dapat dijalankan secara bersamaan.
-nologo Jangan tampilkan banner startup atau pesan hak cipta.
-preprocess[:{filepath}]

-pp[:{filepath}]
Membuat satu file proyek agregat dengan menyejajarkan semua file yang akan diimpor selama build, dengan batasan yang ditandai. Anda dapat menggunakan switch ini agar bisa dengan mudah mengetahui file mana yang sedang diimpor, dari mana file diimpor, dan file mana yang berkontribusi pada build. Saat Anda menggunakan switch ini, proyek tidak dibangun.

Jika Anda menentukan filepath, file proyek agregat akan menjadi output ke file. Jika tidak, output akan muncul di jendela konsol.

Untuk informasi tentang cara menggunakan elemen Import untuk menyisipkan file proyek ke file proyek lain, lihat Impor elemen (MSBuild) dan Cara: Menggunakan target yang sama di beberapa file proyek.
-outputResultsCache[:{cacheFile}]

-orc[:{cacheFile}]
File cache output tempat MSBuild menulis konten cache hasil buildnya di akhir build. Jika -isolateProjects diatur ke False, ini mengaturnya ke True.
profileEvaluation:{file} Membuat profil evaluasi MSBuild dan menulis hasilnya ke file yang ditentukan. Jika ekstensi file yang ditentukan adalah '.md', hasilnya akan berupa format Markdown. Jika tidak, hasilnya akan berupa file yang dipisahkan tab.
-property:{name}={value}

-p:{name}={value}
Mengatur atau mengambil alih properti tingkat proyek yang ditentukan, name di sini merupakan nama properti dan value merupakan nilai properti. Tentukan setiap properti secara terpisah, atau gunakan titik koma maupun koma untuk memisahkan beberapa properti, seperti yang ditunjukkan contoh berikut:

-property:WarningLevel=2;OutDir=bin\Debug

Lihat Properti proyek MSBuild umum untuk daftar properti yang umum digunakan. Kumpulan lengkap properti yang tersedia tergantung pada jenis proyek, SDK, dan file yang diimpor.
-restore

-r
Menjalankan target Restore sebelum membangun target sebenarnya.
-restoreProperty:{name}={value}

-rp:{name}={value}
Atur atau ambil alih properti tingkat proyek ini hanya selama pemulihan dan jangan gunakan properti yang ditentukan dengan -property argumen . name adalah nama properti dan value adalah nilai properti. Gunakan titik koma atau koma untuk memisahkan beberapa properti, atau tentukan setiap properti secara terpisah.
-target:{targets}

-t:{targets}
Membangun target yang ditentukan dalam proyek. Tentukan setiap properti secara terpisah, atau gunakan titik koma maupun koma untuk memisahkan beberapa target, seperti yang ditunjukkan contoh berikut:

-target:PrepareResources;Compile

Jika Anda menentukan target apa pun dengan menggunakan sakelar ini, target dijalankan alih-alih target apa pun dalam DefaultTargets atribut dalam file proyek. Untuk informasi selengkapnya, lihat Urutan build target dan Cara: Menentukan target yang harus dibangun terlebih dahulu.

Target adalah sekelompok tugas. Untuk informasi selengkapnya, lihat Target.
-targets[:{file}]

-ts[:{file}]
Menulis daftar target yang tersedia ke file yang ditentukan (atau perangkat output, jika tidak ada file yang ditentukan), tanpa benar-benar menjalankan proses build.
-toolsVersion:{version}

-tv:{version}
Menentukan set alat kustom. Set alat terdiri dari tugas, target, dan alat yang digunakan untuk membangun aplikasi. Lihat Toolset (ToolsVersion) dan Konfigurasi toolset standar dan kustom.
-validate:[{schema}]

-val[{schema}]
Memvalidasi file proyek dan membangun proyek jika validasi berhasil.

Jika Anda tidak menentukan schema, proyek akan divalidasi berdasarkan skema default.

Jika Anda menentukan schema, proyek akan divalidasi berdasarkan skema yang Anda tentukan.

Pengatuan berikut adalah contohnya: -validate:MyExtendedBuildSchema.xsd
-verbosity:{level}

-v:{level}
Menentukan jumlah informasi yang akan ditampilkan dalam log build. Setiap pencatat menampilkan peristiwa berdasarkan tingkat verbositas yang Anda tetapkan untuk pencatat tersebut.

Anda dapat menentukan tingkat verbositas berikut: q[uiet], m[inimal], n[ormal] (default), d[etailed], dan diag[nostic].

Pengatuan berikut adalah contohnya: -verbosity:quiet
-version

-ver
Menampilkan informasi versi saja. Proyek tidak dibangun.
@{file} Menyisipkan switch baris perintah dari file teks. Tentukan switch ini secara terpisah jika Anda memiliki beberapa file. Untuk informasi selengkapnya, lihat File respons.
-warnAsError[:{code; ...}]

-err[:{code; ...}]
Daftar kode peringatan untuk dianggap sebagai kesalahan. Gunakan titik koma atau koma untuk memisahkan beberapa kode peringatan. Untuk memperlakukan semua peringatan sebagai kesalahan, gunakan switch tanpa nilai. Ketika peringatan diperlakukan sebagai kesalahan, target terus dijalankan seolah-olah itu adalah peringatan, tetapi build keseluruhan gagal.

Contoh: -err:MSB4130
-warnNotAsError[:{code; ...}]

-noerr[:{code; ...}]
MSBuild 17.0 dan yang lebih baru. Daftar kode peringatan yang seharusnya tidak dipromosikan ke kesalahan. Secara khusus, jika sakelar warnAsError diatur untuk mempromosikan semua peringatan ke kesalahan, kode kesalahan yang ditentukan dengan warnNotAsError tidak dipromosikan. Ini tidak berpengaruh jika warnAsError tidak diatur untuk mempromosikan semua peringatan ke kesalahan. Gunakan titik koma atau koma untuk memisahkan beberapa kode peringatan.

Contoh: -noerr:MSB4130
-warnAsMessage[:{code}; ...}]

-noWarn[:{code; ...}]
Daftar kode peringatan yang dianggap sebagai pesan penting tingkat rendah. Gunakan titik koma atau koma untuk memisahkan beberapa kode peringatan.

Contoh: -noWarn:MSB3026

Switch untuk pencatat

Sakelar Deskripsi
-binaryLogger[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]

-bl[:[LogFile=]{output.binlog}
[;ProjectImports=None,Embed,ZipFile]]
Menserialisasikan semua peristiwa build ke file biner terkompresi. Secara default file berada di direktori saat ini dan diberi nama msbuild.binlog. Log biner adalah deskripsi terperinci proses build yang nantinya dapat digunakan untuk merekonstruksi log teks dan digunakan oleh alat analisis lainnya. Log biner biasanya 10-20x lebih kecil dari log tingkat diagnostik teks yang paling rinci, tetapi log ini berisi lebih banyak informasi.

Pencatat biner secara default mengumpulkan teks sumber file proyek, termasuk semua proyek yang diimpor dan file target yang ditemui selama build. Parameter opsional ProjectImports mengontrol perilaku ini:

- ProjectImports=None. Jangan kumpulkan impor proyek.
- ProjectImports=Embed. Sematkan impor proyek dalam file log (default).
- ProjectImports=ZipFile. Simpan file proyek ke {output}.projectimports.zip di mana <output> adalah nama yang sama dengan nama file log biner.

Pengaturan default untuk ProjectImports adalah Embed.
Catatan: pencatat tidak mengumpulkan file sumber non-MSBuild seperti , .cpp, dan sebagainya.cs.
File .binlog dapat "diputar kembali" dengan meneruskannya ke msbuild.exe sebagai argumen, bukan proyek/solusi. Pencatat lain menerima informasi yang terkandung dalam file log seolah-olah build asli terjadi. Anda dapat membaca info selengkapnya tentang log biner dan penggunaannya di: https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md

Contoh:
- -bl
- -bl:output.binlog
- -bl:output.binlog;ProjectImports=None
- -bl:output.binlog;ProjectImports=ZipFile
- -bl:..\..\custom.binlog
- -binaryLogger
-consoleLoggerParameters:{parameters}

-clp:{parameters}
Meneruskan parameter yang Anda tentukan ke pencatat konsol, yang menampilkan informasi build di jendela konsol. Anda dapat menentukan parameter berikut:

- PerformanceSummary. Tampilkan waktu yang dihabiskan dalam tugas, target, dan proyek.
- Summary. Tampilkan ringkasan kesalahan dan peringatan di akhir.
- NoSummary. Jangan tampilkan ringkasan kesalahan dan peringatan di akhir.
- ErrorsOnly. Tampilkan kesalahan saja.
- WarningsOnly. Tampilkan peringatan saja.
- NoItemAndPropertyList. Jangan tampilkan daftar item dan properti yang akan muncul di awal setiap build proyek jika tingkat verbositas diatur ke diagnostic.
- ShowCommandLine. Tampilkan pesan TaskCommandLineEvent.
- ShowProjectFile. Menampilkan jalur ke file proyek dalam pesan diagnostik. Pengaturan ini aktif secara default.
- ShowTimestamp. Tampilkan stempel waktu sebagai awalan untuk pesan apa pun.
- ShowEventId. Tampilkan ID peristiwa untuk setiap peristiwa yang dimulai, peristiwa selesai, dan pesan.
- ForceNoAlign. Jangan ratakan teks ke ukuran buffer konsol.
- DisableConsoleColor. Gunakan warna konsol default untuk semua pesan pengelogan.
- DisableMPLogging. Nonaktifkan gaya pengelogan multiprosesor output saat berjalan dalam mode non-multiprosesor.
- EnableMPLogging. Aktifkan gaya pengelogan multiprosesor bahkan saat berjalan dalam mode non-multiprosesor. Gaya pengelogan ini aktif secara default.
- ForceConsoleColor. Gunakan warna konsol ANSI meskipun konsol tidak mendukungnya.
- Verbosity. Ambil alih pengaturan untuk pencatat -verbosity ini.

Gunakan titik koma untuk memisahkan beberapa parameter, seperti yang ditunjukkan contoh berikut:

-consoleloggerparameters:PerformanceSummary;NoSummary -verbosity:minimal

Pencatat konsol default berada pada tingkat verbositas normal dan menyertakan Summary.
-distributedFileLogger

-dfl
Mencatat output build dari setiap node MSBuild ke filenya sendiri. Lokasi awal untuk file-file ini adalah direktori saat ini. Secara default, file diberi nama MSBuild{NodeId}.log. Anda dapat menggunakan sakelar -fileLoggerParameters untuk menentukan lokasi file dan parameter lain untuk fileLogger.

Jika Anda memberi nama file log dengan menggunakan -fileLoggerParameters sakelar, pencatat terdistribusi menggunakan nama tersebut sebagai templat dan menambahkan ID simpul ke nama tersebut saat membuat file log untuk setiap simpul.
-distributedLogger:{central logger},{forwarding logger}, ...

-dl:{central logger},{forwarding logger, ...}
Mencatat peristiwa dari MSBuild, dengan melampirkan instans pencatat yang berbeda ke setiap node. Untuk menentukan beberapa pencatat, tentukan setiap pencatat secara terpisah.

Anda menggunakan sintaks pencatat untuk menentukan pencatat, kecuali Anda menyediakan dan kelas tambahan untuk pencatat penerusan. Untuk sintaks pencatat, lihat sakelar -logger .

Contoh berikut menunjukkan cara menggunakan switch ini:

-dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll
-fileLogger[{number}]

-fl[{number}]
Mencatat output build ke satu file di direktori saat ini. Jika Anda tidak menentukan number, file output akan diberi nama msbuild.log. Jika Anda tidak menentukan number, file output akan diberi nama msbuild<n>.log, <n> di sini adalah number. Number dapat berupa digit 1 hingga 9.

Anda dapat menggunakan sakelar -fileLoggerParameters untuk menentukan lokasi file dan parameter lain untuk fileLogger.
-fileLoggerParameters[{number}]:

parameters

-flp[{number}]: {parameters}
Menentukan parameter tambahan untuk pencatat file dan pencatat file yang sudah terdistribusi. Kehadiran sakelar ini menyiratkan bahwa sakelar yang -filelogger[number] sesuai ada. Number dapat berupa digit 1 hingga 9.

Anda dapat menggunakan semua parameter yang tercantum untuk -consoleloggerparameters. Anda juga dapat menggunakan satu atau beberapa parameter berikut:

- LogFile. Jalur ke file log tempat log build ditulis. Pencatat file yang sudah terdistribusi menggunakan jalur ini sebagai awalan nama file lognya.
- Append. Menentukan apakah log build ditambahkan ke file log atau justru menimpanya. Saat Anda mengatur switch ini, log build akan ditambahkan ke file log. Saat sakelar tidak ada, konten file log yang ada akan ditimpa.
Contoh: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append
Jika Anda menyertakan pengaturan true atau false yang eksplisit, log akan ditambahkan terlepas dari pengaturannya. Jika Anda tidak menyertakan sakelar penambah, log akan ditimpa.
Dalam hal ini, file ditimpa: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log
Dalam hal ini, file ditambahkan: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=true
Dalam hal ini, file ditambahkan: msbuild myfile.proj -flp:FileLogger,Microsoft.Build;logfile=MyLog.log;append=false
- Encoding. Menentukan pengodean untuk file (misalnya, UTF-8, Unicode, atau ASCII).

Contoh berikut menghasilkan file log terpisah untuk peringatan dan kesalahan:

-flp1:logfile=errors.txt;errorsonly -flp2:logfile=warnings.txt;warningsonly

Contoh berikut menunjukkan kemungkinan lainnya:

-fileLoggerParameters:LogFile=MyLog.log;Append; Verbosity=diagnostic;Encoding=UTF-8

-flp:Summary;Verbosity=minimal;LogFile=msbuild.sum

-flp1:warningsonly;logfile=msbuild.wrn

-flp2:errorsonly;logfile=msbuild.err
-logger:logger

-l:logger
Menentukan pencatat yang akan digunakan untuk mencatat peristiwa dari MSBuild. Untuk menentukan beberapa pencatat, tentukan setiap pencatat secara terpisah.

Gunakan sintaks berikut untuk logger: [LoggerClass,]LoggerAssembly[;LoggerParameters]

Gunakan sintaks berikut untuk LoggerClass: [PartialOrFullNamespace.]LoggerClassName

Anda tidak perlu menentukan kelas pencatat jika rakitan berisi tepat satu pencatat.

Gunakan sintaks berikut untuk LoggerAssembly: AssemblyName[,StrongName] \| AssemblyFile

Parameter pencatat bersifat opsional dan diteruskan ke pencatat persis seperti yang Anda masukkan.

Contoh berikut menggunakan sakelar -logger .

-logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral

-logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML
-noConsoleLogger

-noconlog
Nonaktifkan pencatat konsol default, dan jangan catat peristiwa ke konsol.
-terminalLogger[:auto,on,off]

-tl[:auto,on,off]
Aktifkan atau nonaktifkan pencatat terminal. Pencatat terminal menyediakan output build yang ditingkatkan pada konsol secara real time, diatur secara logis menurut proyek, dan dirancang untuk menyoroti informasi yang dapat ditindaklanjuti. Tentukan auto (atau gunakan opsi tanpa argumen) untuk menggunakan pencatat terminal hanya jika output standar tidak dialihkan. Jangan mengurai output atau mengandalkan output tersebut tetap tidak berubah dalam versi mendatang. Opsi ini tersedia di MSBuild 17.8 dan yang lebih baru.

Contoh 1

Contoh berikut membangun target rebuild dari proyek MyProject.proj.

MSBuild.exe MyProject.proj -t:rebuild

Contoh 2

Anda dapat menggunakan MSBuild.exe untuk melakukan build yang lebih kompleks. Misalnya, Anda dapat menggunakannya untuk membangun target khusus dari proyek tertentu dalam satu solusi. Contoh berikut membangun kembali proyek NotInSolutionFolder dan membersihkan proyek InSolutionFolder, yang ada di folder solusi NewFolder.

msbuild SlnFolders.sln -t:NotInSolutionfolder:Rebuild;NewFolder\InSolutionFolder:Clean

Lihat juga