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 pack - Mengemas kode ke dalam paket NuGet.
Sinopsis
dotnet pack [<PROJECT>|<SOLUTION>|<NUSPEC>|<FILE>]
[--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
[--disable-build-servers] [--force] [--include-source] [--include-symbols]
[--interactive] [--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [-p|--property:<PROPERTYNAME>=<VALUE>]
[--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version <VERSION>] [--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Description
Perintah dotnet pack membangun proyek dan membuat paket NuGet. Hasil dari perintah ini adalah paket NuGet (yaitu, file .nupkg ).
Dimulai dengan .NET 10, Anda juga dapat meneruskan file .nuspec atau aplikasi berbasis file (.cs file) langsung sebagai argumen. Saat Anda meneruskan file .nuspec , dotnet pack buat paket dari file .nuspec tanpa memerlukan file proyek dan tanpa menjalankan MSBuild. Saat Anda meneruskan aplikasi berbasis file, dotnet pack mengemasnya tanpa file proyek.
Jika Anda ingin membuat paket yang berisi simbol debug, Anda memiliki dua opsi yang tersedia:
-
--include-symbols- itu membuat paket simbol. -
--include-source- ini membuat paket simbol dengansrcfolder di dalamnya berisi file sumber.
Dependensi NuGet dari proyek yang dikemas ditambahkan ke file .nuspec , sehingga diselesaikan dengan benar saat paket diinstal. Jika proyek yang dikemas memiliki referensi ke proyek lain, proyek lain tidak disertakan dalam paket. Saat ini, Anda harus memiliki paket per proyek jika Anda memiliki dependensi proyek-ke-proyek.
Secara default, dotnet pack membangun proyek terlebih dahulu. Jika Anda ingin menghindari perilaku ini, berikan --no-build opsi . Opsi ini sering berguna dalam skenario build Integrasi Berkelanjutan (CI) di mana Anda tahu kode sebelumnya dibuat.
Nota
Dalam beberapa kasus, build implisit tidak dapat dilakukan. Ini dapat terjadi ketika GeneratePackageOnBuild diatur, untuk menghindari dependensi siklik antara target build dan paket. Build juga dapat gagal jika ada file terkunci atau masalah lainnya.
Nota
Proyek web tidak dapat dikemas.
Pemulihan implisit
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 build integrasi berkelanjutan di Azure DevOps Services atau dalam sistem build yang perlu mengontrol secara eksplisit ketika 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.
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.
Arguments
PROJECT | SOLUTION | NUSPEC | FILE
Proyek, solusi, file .nuspec , atau aplikasi berbasis file untuk dikemas.
PROJECTadalah jalur ke.csprojfile ,.vbproj, atau.fsproj, atau ke direktori yang berisi file proyek.SOLUTIONadalah jalur ke file solusi (.slnatau.slnxekstensi), atau ke direktori yang berisi file solusi.NUSPECadalah jalur ke.nuspecfile. Tersedia mulai dari .NET 10.FILEadalah jalur ke aplikasi berbasis file (file C# tanpa file proyek yang sesuai). Tersedia mulai dari .NET 10. Untuk informasi selengkapnya, lihat Membangun aplikasi C# berbasis file.Jika tidak ditentukan, perintah mencari direktori saat ini untuk proyek atau file solusi.
Opsi
-
--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 . Opsi ini dan nilai yang disediakan harus secara eksplisit dikaitkan dalam perintah apa pun
dotnetyang bergantung pada output perintah laindotnet, misalnya, saat menggunakandotnet build --no-restoredandotnet publish --no-build. Tersedia sejak .NET 8 SDK. -
-c|--configuration <CONFIGURATION>Menentukan konfigurasi build. Jika Anda mengembangkan dengan .NET 8 SDK atau versi yang lebih baru, perintah menggunakan konfigurasi
Releasesecara default untuk proyek yang TargetFramework-nya diatur kenet8.0atau versi yang lebih baru. Konfigurasi build defaultDebuguntuk versi SDK yang lebih lama dan untuk kerangka kerja target sebelumnya. Anda dapat mengambil alih default dalam pengaturan proyek atau dengan menggunakan opsi ini. Untuk informasi selengkapnya, lihat 'penerbitan dotnet' menggunakan konfigurasi Rilis dan 'paket dotnet' menggunakan konfigurasi Rilis. -
--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.
--forceMemaksa semua dependensi untuk diselesaikan bahkan jika pemulihan terakhir berhasil. Menentukan bendera ini sama dengan menghapus file project.assets.json.
--include-sourceTermasuk simbol debug paket NuGet selain paket NuGet reguler dalam direktori output. File sumber disertakan
srcdalam folder dalam paket simbol.--include-symbolsTermasuk simbol debug paket NuGet selain paket NuGet reguler dalam direktori output.
-
--interactiveMemungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi.
--no-buildTidak membangun proyek sebelum pengemasan. Ini juga secara implisit
--no-restoremengatur bendera.--no-dependenciesMengabaikan referensi proyek-ke-proyek dan hanya memulihkan proyek akar.
--no-restoreTidak menjalankan pemulihan implisit saat menjalankan perintah.
--nologoTidak menampilkan banner startup atau pesan hak cipta.
-o|--output <OUTPUT_DIRECTORY>Tempatkan paket bawaan dalam direktori yang ditentukan.
.NET 7.0.200 SDK
Dalam SDK 7.0.200, jika Anda menentukan
--outputopsi saat menjalankan perintah ini pada solusi, CLI akan mengeluarkan kesalahan. Ini adalah regresi dan diperbaiki pada 7.0.201 dan versi yang lebih baru dari SDK .NET.
-p|--property:<PROPERTYNAME>=<VALUE>Mengatur satu atau beberapa properti MSBuild. Saat mengemas file .nuspec secara langsung, properti digunakan untuk penggantian token dalam file .nuspec daripada sebagai 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>Untuk informasi selengkapnya, lihat Properti target paket NuGet dan referensi baris perintah MSBuild.
--runtime <RUNTIME_IDENTIFIER>Menentukan runtime target untuk memulihkan paket. Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID.
-s|--serviceableMengatur bendera yang dapat dilayankan dalam paket. Untuk informasi selengkapnya, lihat Blog .NET: .NET Framework 4.5.1 Mendukung Pembaruan Microsoft Security untuk Pustaka NuGet .NET.
-
--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.
-
-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 <VERSION>Versi paket yang akan dibuat. Saat mengemas file .nuspec , ambil alih nomor versi dalam file .nuspec .
Nota
Tersedia mulai dari .NET 10.
--version-suffix <VERSION_SUFFIX>Menentukan nilai untuk
VersionSuffixproperti MSBuild. Efek properti ini pada versi paket tergantung pada nilaiVersionproperti danVersionPrefix, seperti yang ditunjukkan dalam tabel berikut:Properti dengan nilai Versi paket None 1.0.0Version$(Version)VersionPrefixhanya$(VersionPrefix)VersionSuffixhanya1.0.0-$(VersionSuffix)VersionPrefixdanVersionSuffix$(VersionPrefix)-$(VersionSuffix)Jika Anda ingin menggunakan
--version-suffix, tentukanVersionPrefixdan bukanVersiondalam file proyek. Misalnya, jikaVersionPrefixadalah0.1.2dan Anda meneruskan--version-suffix rc.1kedotnet pack, versi paket akan menjadi0.1.2-rc.1.Jika
Versionmemiliki nilai dan Anda meneruskan--version-suffixkedotnet pack, nilai yang ditentukan untuk--version-suffixdiabaikan.-
-?|-h|--helpMencetak deskripsi cara menggunakan perintah.
Examples
Kemas proyek di direktori saat ini:
dotnet packapp1Kemas proyek:dotnet pack ~/projects/app1/project.csprojKemas proyek di direktori saat ini dan letakkan paket yang dihasilkan ke
nupkgsdalam folder:dotnet pack --output nupkgsKemas proyek di direktori saat ini ke
nupkgsdalam folder dan lewati langkah build:dotnet pack --no-build --output nupkgsDengan akhiran versi proyek yang dikonfigurasi seperti
<VersionSuffix>$(VersionSuffix)</VersionSuffix>dalam file .csproj , kemas proyek saat ini dan perbarui versi paket yang dihasilkan dengan akhiran yang diberikan:dotnet pack --version-suffix "ci-1234"Atur versi paket ke
2.1.0denganPackageVersionproperti MSBuild:dotnet pack -p:PackageVersion=2.1.0Kemas proyek untuk kerangka kerja target tertentu:
dotnet pack -p:TargetFrameworks=net45Kemas proyek dan gunakan runtime tertentu (Windows) untuk operasi pemulihan:
dotnet pack --runtime win-x64Kemas proyek menggunakan file .nuspec (pendekatan berbasis proyek MSBuild):
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nugetUntuk informasi tentang cara menggunakan
NuspecFile, ,NuspecBasePathdanNuspecProperties, lihat sumber daya berikut:Kemas file .nuspec secara langsung, tanpa file proyek (.NET 10 dan yang lebih baru):
dotnet pack MyPackage.nuspec --output ./artifacts ```dotnetcli dotnet pack MyPackage.nuspec --version 1.2.3 --output ./artifactsKemas file .nuspec secara langsung dan gunakan penggantian token (.NET 10 dan yang lebih baru):
dotnet pack MyPackage.nuspec --property:Version=1.2.3 --property:Configuration=Release --output ./artifacts