build dotnet
Artikel ini berlaku untuk: ✔️ .NET Core 3.1 SDK dan versi yang lebih baru
Nama
dotnet build
- Membuat proyek beserta semua dependensinya.
Sinopsis
dotnet build [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
[--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [-f|--framework <FRAMEWORK>]
[--disable-build-servers]
[--force] [--interactive] [--no-dependencies] [--no-incremental]
[--no-restore] [--nologo] [--no-self-contained] [--os <OS>]
[-o|--output <OUTPUT_DIRECTORY>]
[-p|--property:<PROPERTYNAME>=<VALUE>]
[-r|--runtime <RUNTIME_IDENTIFIER>]
[--self-contained [true|false]] [--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]
dotnet build -h|--help
Deskripsi
Perintah dotnet build
membangun proyek dan dependensinya ke dalam kumpulan biner. Biner menyertakan kode proyek dalam file Bahasa Perantara (IL) dengan ekstensi .dll. Bergantung pada jenis dan pengaturan proyek, file lain mungkin disertakan, seperti:
- Eksekusi yang dapat digunakan untuk menjalankan aplikasi, jika jenis proyek adalah .NET Core 3.0 penargetan atau yang lebih baru yang dapat dieksekusi.
- 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 versi lebih awal dari .NET Core 3.0, dependensi pustaka dari NuGet biasanya TIDAK disalin ke folder output. Proyek tersebut diselesaikan dari folder paket global NuGet pada saat eksekusi. Karena alasan tersebut, produk dotnet build
belum siap untuk ditransfer ke komputer lain untuk dijalankan. Untuk membuat versi aplikasi yang dapat disebarkan, Anda perlu menerbitkannya (misalnya, dengan perintah penerbitan dotnet). Untuk informasi selengkapnya, lihat Penyebaran Aplikasi .NET.
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 membuat proyek, sehingga 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 proyek atau solusi untuk build. Jika file proyek atau solusi tidak ditentukan, MSBuild akan mencari file yang memiliki ekstensi file yang berakhiran proj atau sln di direktori kerja saat ini, lalu menggunakan file tersebut.
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 x86
akan 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.
-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-servers
Memaksa 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
.--force
Memaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.
-?|-h|--help
Mencetak deskripsi cara menggunakan perintah.
--interactive
Memungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi. Tersedia sejak SDK .NET Core 3.0.
--no-dependencies
Mengabaikan referensi project-to-project (P2P) dan hanya membangun proyek akar yang ditentukan.
--no-incremental
Menandai build sebagai tidak aman untuk build tambahan. Tanda ini menonaktifkan kompilasi tambahan dan memaksa pembuatan kembali grafik dependensi proyek dari awal.
--no-restore
Tidak menjalankan pemulihan implisit selama build.
--nologo
Tidak menampilkan banner startup atau pesan hak cipta.
--no-self-contained
Menerbitkan aplikasi sebagai aplikasi yang bergantung pada kerangka kerja. Runtime .NET yang kompatibel harus diinstal pada komputer target untuk menjalankan aplikasi. Tersedia sejak .NET 6 SDK.
-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--framework
saat Anda menentukan opsi ini..NET 7.0.200 SDK dan yang lebih baru
Jika Anda menentukan
--output
opsi saat menjalankan perintah ini pada solusi, CLI akan mengeluarkan peringatan (kesalahan dalam 7.0.200) karena semantik jalur output yang tidak jelas. Opsi--output
ini 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--output
tidak 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 linux
akan 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-contained
atau--no-self-contained
. Jika tidak ditentukan, defaultnya adalah membuat untuk OS dan arsitektur saat ini.--self-contained [true|false]
Menerbitkan runtime .NET dengan aplikasi sehingga runtime tidak perlu diinstal pada komputer target. Defaultnya adalah
true
jika pengidentifikasi runtime ditentukan. Tersedia sejak .NET 6.--source <SOURCE>
URI sumber paket NuGet yang akan digunakan selama operasi pemulihan.
--tl:[auto|on|off]
Menentukan apakah pencatat terminal 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.on
melewati pemeriksaan lingkungan dan mengaktifkan pengelogan terminal.off
melewati pemeriksaan lingkungan dan menggunakan pencatat konsol default.Pencatat terminal 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.
-v|--verbosity <LEVEL>
Mengatur tingkat verbositas perintah. Nilai yang diizinkan adalah
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
, dandiag[nostic]
. Default adalahminimal
. Secara default, MSBuild menampilkan peringatan dan kesalahan di semua tingkat verbositas. Untuk mengecualikan peringatan, gunakan/property:WarningLevel=0
. Untuk informasi selengkapnya, lihat LoggerVerbosity dan WarningLevel.--use-current-runtime, --ucr [true|false]
RuntimeIdentifier
Mengatur ke platform portabelRuntimeIdentifier
berdasarkan salah satu komputer Anda. Ini terjadi secara implisit dengan properti yang memerlukanRuntimeIdentifier
, sepertiSelfContained
, ,PublishAot
PublishSelfContained
,PublishSingleFile
, danPublishReadyToRun
. Jika properti diatur ke false, resolusi implisit tersebut tidak akan lagi terjadi.--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.
Contoh
Membuat proyek dan dependensinya:
dotnet build
Buat proyek dan dependensinya menggunakan konfigurasi Rilis:
dotnet build --configuration Release
Bangun proyek dan dependensinya untuk runtime tertentu (dalam contoh ini, Linux):
dotnet build --runtime linux-x64
Buat proyek dan gunakan sumber paket NuGet yang ditentukan selama operasi pemulihan:
dotnet build --source c:\packages\mypackages
Buat proyek dan atur versi 1.2.3.4 sebagai parameter build menggunakan
-p
opsi MSBuild:dotnet build -p:Version=1.2.3.4