Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini berlaku untuk: ✔️ .NET 6 SDK dan versi yang lebih baru
Nama
dotnet build - Membangun proyek, solusi, atau aplikasi berbasis file dan semua dependensinya.
Sinopsis
dotnet build [<PROJECT>|<SOLUTION>|<FILE>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>] [-bl|--binaryLogger:<FILE>]
[-c|--configuration <CONFIGURATION>] [--disable-build-servers]
[-f|--framework <FRAMEWORK>] [--force] [--interactive]
[--no-dependencies] [--no-incremental] [--no-restore] [--nologo]
[--no-self-contained] [-o|--output <OUTPUT_DIRECTORY>] [--os <OS>]
[-p|--property:<PROPERTYNAME>=<VALUE>] [-r|--runtime <RUNTIME_IDENTIFIER>]
[--sc|--self-contained] [--source <SOURCE>]
[--tl:[auto|on|off]] [ --ucr|--use-current-runtime]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Deskripsi
Perintah ini dotnet build membangun aplikasi berbasis proyek, solusi, atau file dan dependensinya ke dalam sekumpulan biner. Biner menyertakan kode proyek dalam file Bahasa Perantara (IL) dengan ekstensi .dll. Bergantung pada jenis dan pengaturan proyek, file lain mungkin disertakan, seperti:
- Executable yang dapat digunakan untuk menjalankan aplikasi.
- File simbol yang digunakan untuk penelusuran kesalahan dengan ekstensi .pdb.
- File .deps.json, yang mencantumkan dependensi aplikasi atau pustaka.
- File .runtimeconfig.json, yang menentukan runtime bersama dan versinya untuk aplikasi.
- Pustaka lain tempat proyek bergantung (melalui referensi proyek atau referensi paket NuGet).
Untuk proyek yang dapat dieksekusi yang menargetkan .NET Core 3.0 dan yang lebih baru, dependensi pustaka disalin ke folder output. Ini berarti jika tidak ada logika khusus publikasi lainnya (seperti proyek Web), output build harus dapat disebarkan.
Pemulihan implisit
Proses build memerlukan file project.assets.json, yang mencantumkan dependensi aplikasi Anda. File dibuat saat dotnet restore dijalankan. Tanpa menyiapkan file aset, alat tidak dapat menyelesaikan perakitan referensi, yang menghasilkan kesalahan.
Anda tidak harus menjalankan dotnet restore karena dijalankan secara implisit oleh semua perintah yang memerlukan terjadinya pemulihan, seperti dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, dan dotnet pack. Untuk menonaktifkan pemulihan implisit, gunakan opsi --no-restore.
Perintah dotnet restore masih berguna dalam skenario tertentu di mana pemulihan secara eksplisit masuk akal, seperti pembangunan integrasi berkelanjutan di Azure DevOps Services atau dalam sistem pembangunan yang perlu secara eksplisit mengontrol saat pemulihan terjadi.
Untuk informasi tentang cara mengelola umpan NuGet, lihat dotnet restore dokumentasi.
Perintah ini mendukung opsi dotnet restore ketika diteruskan dalam bentuk panjang (misalnya, --source). Opsi pendek, seperti -s, tidak didukung.
Output yang dapat dieksekusi atau pustaka
Apakah proyek dapat dieksekusi atau tidak ditentukan oleh properti <OutputType> dalam file proyek. Contoh berikut menunjukkan proyek yang menghasilkan kode yang dapat dieksekusi:
<PropertyGroup>
<OutputType>Exe</OutputType>
</PropertyGroup>
Untuk membuat pustaka, hapus properti <OutputType> atau ubah nilainya menjadi Library. Bahasa perantara DLL untuk pustaka tidak berisi titik masuk dan tidak dapat dieksekusi.
MSBuild
dotnet build menggunakan MSBuild untuk membangun proyek, solusi, atau aplikasi berbasis file. Ini mendukung build paralel dan inkremental. Untuk informasi selengkapnya, lihat Build Bertambah Bertahap.
Selain opsi tersebut, perintah dotnet build menerima opsi MSBuild, seperti -p untuk mengatur properti atau -l untuk menentukan pencatat. Untuk informasi selengkapnya tentang opsi ini, lihat Referensi Baris Perintah MSBuild. Atau, Anda juga dapat menggunakan perintah msbuild dotnet.
Catatan
Ketika dotnet build dijalankan secara otomatis oleh dotnet run, argumen seperti -property:property=value tidak dipatuhi.
Menjalankan dotnet build setara dengan menjalankan dotnet msbuild -restore; tetapi, verbositas default output berbeda.
Pengunduhan manifes beban kerja
Saat Anda menjalankan perintah ini, pengunduhan latar belakang asinkron manifes iklan untuk beban kerja akan dimulai. Jika unduhan masih berjalan saat perintah ini selesai, unduhan akan dihentikan. Untuk informasi selengkapnya, lihat Manifes iklan.
Argumen
PROJECT | SOLUTION | FILE
File proyek atau solusi atau C# (aplikasi berbasis file) untuk dioperasikan. Jika file tidak ditentukan, MSBuild mencari direktori saat ini untuk proyek atau solusi.
PROJECTadalah jalur dan nama file file proyek C#, F#, atau Visual Basic, atau jalur ke direktori yang berisi file proyek C#, F#, atau Visual Basic.SOLUTIONadalah jalur dan nama file file solusi ( ekstensi.sln atau .slnx), atau jalur ke direktori yang berisi file solusi.FILEadalah argumen yang ditambahkan dalam .NET 10. Jalur dan nama file aplikasi berbasis file. Aplikasi berbasis file terkandung dalam satu file yang dibangun dan dijalankan tanpa file proyek (.csproj) yang sesuai. Untuk informasi selengkapnya, lihat Membangun aplikasi C# berbasis file.
Opsi
-
-a|--arch <ARCHITECTURE>Menentukan arsitektur target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer
win-x64, menentukan--arch x86akan mengatur RID kewin-x86. Jika Anda menggunakan opsi ini, jangan gunakan opsi-r|--runtime. Tersedia sejak .NET 6 Preview 7. -
--artifacts-path <ARTIFACTS_DIR>Semua file output build dari perintah yang dijalankan akan masuk ke subfolder di bawah jalur yang ditentukan, dipisahkan oleh proyek. Untuk informasi selengkapnya, lihat Tata Letak Output Artefak. Tersedia sejak .NET 8 SDK.
-bl|--binaryLogger:<FILE>Mengaktifkan pencatat biner dan secara opsional menentukan nama file output.
Jika tidak ada nama file yang disediakan, defaultnya adamsbuild.binlogdi direktori saat ini.Log biner berisi informasi build terperinci dan dapat dibuka dengan MSBuild Structured Log Viewer.
dotnet build -bl dotnet build -bl:build-log.binlog-
-c|--configuration <CONFIGURATION>Menentukan konfigurasi build. Pengaturan default untuk sebagian besar proyek adalah
Debug, tetapi Anda dapat mengambil alih pengaturan konfigurasi build di proyek Anda. -
--disable-build-serversMemaksa perintah untuk mengabaikan server build persisten apa pun. Opsi ini menyediakan cara yang konsisten untuk menonaktifkan semua penggunaan penembolokan build, yang memaksa build dari awal. Build yang tidak mengandalkan cache berguna ketika cache mungkin rusak atau salah karena beberapa alasan. Tersedia sejak .NET 7 SDK.
-f|--framework <FRAMEWORK>Melakukan kompilasi untuk kerangka kerja tertentu. Kerangka kerja harus ditentukan dalam file proyek. Contoh:
net7.0,net462.--forceMemaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.
-
--interactiveMemungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi.
--no-dependenciesMengabaikan referensi project-to-project (P2P) dan hanya membangun proyek akar yang ditentukan.
--no-incrementalMenandai build sebagai tidak aman untuk build tambahan. Tanda ini menonaktifkan kompilasi tambahan dan memaksa pembuatan kembali grafik dependensi proyek dari awal.
--no-restoreTidak menjalankan pemulihan implisit selama build.
--nologoTidak menampilkan banner startup atau pesan hak cipta.
-
--no-self-containedTerbitkan aplikasi Anda sebagai aplikasi yang bergantung pada kerangka kerja. Runtime .NET yang kompatibel harus diinstal pada komputer target untuk menjalankan aplikasi Anda.
-o|--output <OUTPUT_DIRECTORY>Direktori untuk menempatkan biner yang dibuat. Jika tidak ditentukan, nilai default-nya adalah
./bin/<configuration>/<framework>/. Untuk proyek dengan beberapa kerangka kerja target (melalui propertiTargetFrameworks), Anda juga perlu menentukan--frameworksaat Anda menentukan opsi ini..NET 7.0.200 SDK dan yang lebih baru
Jika Anda menentukan
--outputopsi saat menjalankan perintah ini pada solusi, CLI akan mengeluarkan peringatan (kesalahan dalam 7.0.200) karena semantik jalur output yang tidak jelas. Opsi--outputini tidak diizinkan karena semua output dari semua proyek yang dibuat akan disalin ke direktori yang ditentukan, yang tidak kompatibel dengan proyek multi-target, serta proyek yang memiliki versi dependensi langsung dan transitif yang berbeda. Untuk informasi selengkapnya, lihat Opsi tingkat solusi--outputtidak lagi valid untuk perintah terkait build.
-
--os <OS>Menentukan sistem operasi (OS) target. Hal ini adalah sintaks singkat untuk mengatur Pengidentifikasi Runtime (RID), di mana nilai yang disediakan digabung dengan RID default. Misalnya, pada komputer
win-x64, menentukan--os linuxakan mengatur RID kelinux-x64. Jika Anda menggunakan opsi ini, jangan gunakan opsi-r|--runtime. Tersedia sejak .NET 6. -p|--property:<PROPERTYNAME>=<VALUE>Mengatur satu atau beberapa properti MSBuild. Tentukan beberapa properti yang dibatasi oleh titik koma atau dengan mengulangi opsi:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>-r|--runtime <RUNTIME_IDENTIFIER>Menentukan runtime target. Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID. Jika Anda menggunakan opsi ini dengan .NET 6 SDK, gunakan juga
--self-containedatau--no-self-contained. Jika tidak ditentukan, defaultnya adalah membuat untuk OS dan arsitektur saat ini.-
--sc|--self-containedTerbitkan runtime .NET dengan aplikasi Anda sehingga runtime tidak perlu diinstal pada komputer target.
--source <SOURCE>URI sumber paket NuGet yang akan digunakan selama operasi pemulihan.
-
--tl:[auto|on|off]Menentukan apakah Terminal Logger harus digunakan untuk output build. Defaultnya adalah
auto, yang pertama memverifikasi lingkungan sebelum mengaktifkan pengelogan terminal. Pemeriksaan lingkungan memverifikasi bahwa terminal mampu menggunakan fitur output modern dan tidak menggunakan output standar yang dialihkan sebelum mengaktifkan pencatat baru.onmelewati pemeriksaan lingkungan dan mengaktifkan pengelogan terminal.offmelewati pemeriksaan lingkungan dan menggunakan pencatat konsol default.Terminal Logger menunjukkan fase pemulihan diikuti oleh fase build. Selama setiap fase, proyek bangunan saat ini muncul di bagian bawah terminal. Setiap proyek yang membangun menghasilkan target MSBuild yang saat ini sedang dibangun dan jumlah waktu yang dihabiskan untuk target tersebut. Anda dapat mencari informasi ini untuk mempelajari lebih lanjut tentang build. Setelah proyek selesai dibangun, satu bagian "build completed" ditulis yang menangkap:
- Nama proyek bawaan.
- Kerangka kerja target (jika multi-target).
- Status build tersebut.
- Output utama build tersebut (yang di-hyperlink).
- Diagnostik apa pun yang dihasilkan untuk proyek tersebut.
Opsi ini tersedia mulai dari .NET 8.
-
--ucr|--use-current-runtimeGunakan runtime saat ini sebagai runtime target.
-
-v|--verbosity <LEVEL>Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah
q[uiet],m[inimal],n[ormal],d[etailed], dandiag[nostic]. Untuk informasi selengkapnya, lihat LoggerVerbosity . --version-suffix <VERSION_SUFFIX>Mengatur nilai properti
$(VersionSuffix)yang akan digunakan saat membuat proyek. Ini hanya berfungsi jika properti$(Version)tidak diatur. Kemudian,$(Version)diatur ke$(VersionPrefix)dengan$(VersionSuffix), dipisahkan oleh tanda hubung.-
-?|-h|--helpMencetak deskripsi cara menggunakan perintah.
Contoh
Membuat proyek dan dependensinya:
dotnet buildBuat aplikasi berbasis file:
dotnet build MyProject.csDukungan aplikasi berbasis file ditambahkan di .NET SDK 10.0.100.
Buat proyek dan dependensinya menggunakan konfigurasi Rilis:
dotnet build --configuration ReleaseBangun proyek dan dependensinya untuk runtime tertentu (dalam contoh ini, Linux):
dotnet build --runtime linux-x64Buat proyek dan gunakan sumber paket NuGet yang ditentukan selama operasi pemulihan:
dotnet build --source c:\packages\mypackagesBuat proyek dan atur versi 1.2.3.4 sebagai parameter build menggunakan
-popsi MSBuild:dotnet build -p:Version=1.2.3.4