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 ke win-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 properti TargetFrameworks), 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 ke linux-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], dan diag[nostic]. Default adalah minimal. 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 portabel RuntimeIdentifier berdasarkan salah satu komputer Anda. Ini terjadi secara implisit dengan properti yang memerlukan RuntimeIdentifier, seperti SelfContained, , PublishAotPublishSelfContained, PublishSingleFile, dan PublishReadyToRun. 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 -popsi MSBuild:

    dotnet build -p:Version=1.2.3.4