dotnet pack

Artikel ini berlaku untuk: ✔️ .NET Core 3.1 SDK dan versi yang lebih baru

Nama

dotnet pack - Mengemas kode ke dalam paket NuGet.

Sinopsis

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

Deskripsi

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 dengan src 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.

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 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.

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

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.

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. 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 ke net8.0 atau versi yang lebih baru. Konfigurasi build default adalah Debug 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], dan diag[nostic]. Untuk informasi selengkapnya, lihat LoggerVerbosity .

  • --version-suffix <VERSION_SUFFIX>

    Menentukan nilai untuk VersionSuffix properti MSBuild. Efek properti ini pada versi paket tergantung pada nilai Version properti dan VersionPrefix , seperti yang ditunjukkan dalam tabel berikut:

    Properti dengan nilai Versi paket
    Tidak 1.0.0
    Version $(Version)
    VersionPrefix Hanya $(VersionPrefix)
    VersionSuffix Hanya 1.0.0-$(VersionSuffix)
    VersionPrefix dan VersionSuffix $(VersionPrefix)-$(VersionSuffix)

    Jika Anda ingin menggunakan --version-suffix, tentukan VersionPrefix dan bukan Version dalam file proyek. Misalnya, jika VersionPrefix adalah 0.1.2 dan Anda meneruskan --version-suffix rc.1 ke dotnet pack, versi paket akan menjadi 0.1.2-rc.1.

    Jika Version memiliki nilai dan Anda meneruskan --version-suffix ke dotnet pack, nilai yang ditentukan untuk --version-suffix diabaikan.

Contoh

  • 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 dengan PackageVersion 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, , NuspecBasePathdan NuspecProperties, lihat sumber daya berikut: