dotnet pack
Artikel ini berlaku untuk: ✔️ .NET Core 3.1 SDK dan versi yang lebih baru
dotnet pack
- Mengemas kode ke dalam paket NuGet.
dotnet pack [<PROJECT>|<SOLUTION>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--force]
[--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
Perintah dotnet pack
membangun proyek dan membuat paket NuGet. Hasil dari perintah ini adalah paket NuGet (yaitu, file .nupkg ).
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 dengansrc
folder 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.
Catatan
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.
Anda dapat menyediakan properti MSBuild ke dotnet pack
perintah untuk proses pengemasan. Untuk informasi selengkapnya, lihat Properti target paket NuGet dan Referensi Baris Perintah MSBuild. Bagian Contoh memperlihatkan cara menggunakan sakelar MSBuild -p
untuk beberapa skenario yang berbeda.
Catatan
Proyek web tidak dapat dikemas.
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.
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.
PROJECT | SOLUTION
Proyek atau solusi untuk dikemas. Ini adalah jalur ke file csproj, vbproj, atau fsproj, atau ke file solusi atau direktori. Jika tidak ditentukan, perintah mencari direktori saat ini untuk proyek atau file solusi.
--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. Jika Anda mengembangkan dengan .NET 8 SDK atau versi yang lebih baru, perintah menggunakan
Release
konfigurasi secara default untuk proyek yang TargetFramework-nya diatur kenet8.0
atau versi yang lebih baru. Konfigurasi build default adalahDebug
untuk 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.
--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.
--include-source
Termasuk simbol debug paket NuGet selain paket NuGet reguler dalam direktori output. File sumber disertakan
src
dalam folder dalam paket simbol.--include-symbols
Termasuk simbol debug paket NuGet selain paket NuGet reguler dalam direktori output.
--interactive
Memungkinkan perintah berhenti dan menunggu input atau tindakan pengguna. Misalnya, untuk menyelesaikan autentikasi. Tersedia sejak SDK .NET Core 3.0.
--no-build
Tidak membangun proyek sebelum pengemasan. Ini juga secara implisit
--no-restore
mengatur bendera.--no-dependencies
Mengabaikan referensi proyek-ke-proyek dan hanya memulihkan proyek akar.
--no-restore
Tidak menjalankan pemulihan implisit saat menjalankan perintah.
--nologo
Tidak 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
--output
opsi 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 .NET SDK.
--runtime <RUNTIME_IDENTIFIER>
Menentukan runtime target untuk memulihkan paket. Untuk daftar Pengidentifikasi Runtime (RID), lihat katalog RID.
-s|--serviceable
Mengatur bendera yang dapat dilayankan dalam paket. Untuk informasi selengkapnya, lihat .NET Blog: .NET Framework 4.5.1 Mendukung Pembaruan Keamanan Microsoft untuk Pustaka NuGet .NET.
--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]
. Untuk informasi selengkapnya, lihat LoggerVerbosity .
--version-suffix <VERSION_SUFFIX>
Menentukan nilai untuk
VersionSuffix
properti MSBuild. Efek properti ini pada versi paket tergantung pada nilaiVersion
properti danVersionPrefix
, seperti yang ditunjukkan dalam tabel berikut:Properti dengan nilai Versi paket Tidak 1.0.0
Version
$(Version)
VersionPrefix
Hanya$(VersionPrefix)
VersionSuffix
Hanya1.0.0-$(VersionSuffix)
VersionPrefix
danVersionSuffix
$(VersionPrefix)-$(VersionSuffix)
Jika Anda ingin menggunakan
--version-suffix
, tentukanVersionPrefix
dan bukanVersion
dalam file proyek. Misalnya, jikaVersionPrefix
adalah0.1.2
dan Anda meneruskan--version-suffix rc.1
kedotnet pack
, versi paket akan menjadi0.1.2-rc.1
.Jika
Version
memiliki nilai dan Anda meneruskan--version-suffix
kedotnet pack
, nilai yang ditentukan untuk--version-suffix
diabaikan.
Kemas proyek di direktori saat ini:
dotnet pack
app1
Kemas proyek:dotnet pack ~/projects/app1/project.csproj
Kemas proyek di direktori saat ini dan letakkan paket yang dihasilkan ke
nupkgs
dalam folder:dotnet pack --output nupkgs
Kemas proyek di direktori saat ini ke
nupkgs
dalam folder dan lewati langkah build:dotnet pack --no-build --output nupkgs
Dengan 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.0
denganPackageVersion
properti MSBuild:dotnet pack -p:PackageVersion=2.1.0
Kemas proyek untuk kerangka kerja target tertentu:
dotnet pack -p:TargetFrameworks=net45
Kemas proyek dan gunakan runtime tertentu (Windows) untuk operasi pemulihan:
dotnet pack --runtime win-x64
Kemas proyek menggunakan file .nuspec :
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
Untuk informasi tentang cara menggunakan
NuspecFile
, ,NuspecBasePath
danNuspecProperties
, lihat sumber daya berikut:
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: