Membuat paket menggunakan CLI nuget.exe

Tidak peduli apa yang dilakukan paket Anda atau kode apa yang dikandungnya, Anda menggunakan salah satu alat CLI, baik nuget.exe atau dotnet.exe, untuk mengemas fungsionalitas tersebut ke dalam komponen yang dapat dibagikan dengan dan digunakan oleh sejumlah pengembang lain. Untuk menginstal alat NuGet CLI, lihat Menginstal alat klien NuGet. Perhatikan bahwa Visual Studio tidak secara otomatis menyertakan alat CLI.

  • Untuk proyek bergaya non-SDK, biasanya proyek .NET Framework, ikuti langkah-langkah yang dijelaskan dalam artikel ini untuk membuat paket. Untuk instruksi langkah demi langkah menggunakan Visual Studio dan nuget.exe CLI, lihat Membuat dan menerbitkan paket .NET Framework.

  • Untuk proyek .NET Core dan .NET Standard yang menggunakan format gaya SDK, dan proyek gaya SDK lainnya, lihat Membuat paket NuGet menggunakan CLI dotnet.

  • Untuk proyek yang dimigrasikan dari packages.config ke PackageReference, gunakan msbuild -t:pack.

Secara teknis, paket NuGet hanyalah file ZIP yang telah diganti namanya dengan ekstensi dan kontennya cocok dengan .nupkg konvensi tertentu. Topik ini menjelaskan proses terperinci pembuatan paket yang memenuhi konvensi tersebut.

Pengemasan dimulai dengan kode yang dikompilasi (rakitan), simbol, dan/atau file lain yang ingin Anda kirim sebagai paket (lihat Gambaran Umum dan alur kerja). Proses ini independen dari mengkompilasi atau menghasilkan file yang masuk ke paket, meskipun Anda dapat menarik dari informasi dalam file proyek untuk menjaga rakitan dan paket yang dikompilasi tetap sinkron.

Penting

Topik ini berlaku untuk proyek bergaya non-SDK, biasanya proyek selain proyek .NET Core dan .NET Standard menggunakan Visual Studio 2017 dan versi yang lebih tinggi dan NuGet 4.0+.

Memutuskan rakitan mana yang akan dibungkus

Sebagian besar paket tujuan umum berisi satu atau beberapa rakitan yang dapat digunakan pengembang lain dalam proyek mereka sendiri.

  • Secara umum, yang terbaik adalah memiliki satu rakitan per paket NuGet, asalkan setiap rakitan berguna secara independen. Misalnya, jika Anda memiliki Utilities.dll yang bergantung pada Parser.dll, dan Parser.dll berguna sendiri, maka buat satu paket untuk masing-masing paket. Melakukannya memungkinkan pengembang untuk menggunakan Parser.dll secara independen dari Utilities.dll.

  • Jika pustaka Anda terdiri dari beberapa rakitan yang tidak berguna secara independen, maka tidak masalah untuk menggabungkannya menjadi satu paket. Menggunakan contoh sebelumnya, jika Parser.dll berisi kode yang hanya digunakan oleh Utilities.dll, maka tidak masalah untuk disimpan Parser.dll dalam paket yang sama.

  • Demikian pula, jika Utilities.dll tergantung pada Utilities.resources.dll, di mana lagi yang terakhir tidak berguna sendiri, maka letakkan keduanya dalam paket yang sama.

Sumber daya, pada kenyataannya, kasus khusus. Ketika paket diinstal ke dalam proyek, NuGet secara otomatis menambahkan referensi rakitan ke DLL paket, tidak termasuk yang dinamai .resources.dll karena diasumsikan sebagai rakitan satelit yang dilokalkan (lihat Membuat paket yang dilokalkan). Untuk alasan ini, hindari penggunaan .resources.dll untuk file yang berisi kode paket penting.

Jika pustaka Anda berisi rakitan interop COM, ikuti panduan tambahan dalam Membuat paket dengan rakitan interop COM.

Peran dan struktur file .nuspec

Setelah Anda mengetahui file apa yang ingin Anda kemas, langkah berikutnya adalah membuat manifes paket dalam .nuspec file XML.

Manifes:

  1. Menjelaskan konten paket dan disertakan dalam paket itu sendiri.
  2. Mendorong pembuatan paket dan menginstruksikan NuGet tentang cara menginstal paket ke dalam proyek. Misalnya, manifes mengidentifikasi dependensi paket lain sehingga NuGet juga dapat menginstal dependensi tersebut saat paket utama diinstal.
  3. Berisi properti yang diperlukan dan opsional seperti yang dijelaskan di bawah ini. Untuk detail yang tepat, termasuk properti lain yang tidak disebutkan di sini, lihat referensi .nuspec.

Properti yang diperlukan:

  • Pengidentifikasi paket, yang harus unik di seluruh galeri yang menghosting paket.
  • Nomor versi tertentu dalam formulir Major.Minor.Patch[-Suffix] di mana -Suffix mengidentifikasi versi pra-rilis
  • Judul paket seperti yang akan muncul di host (seperti nuget.org)
  • Informasi penulis dan pemilik.
  • Deskripsi paket yang panjang.

Properti opsional umum:

  • Catatan rilis
  • Informasi hak cipta
  • Deskripsi singkat untuk UI Pengelola Paket di Visual Studio
  • ID lokal
  • URL Proyek
  • Lisensi sebagai ekspresi atau file (licenseUrl tidak digunakan lagi, gunakan license elemen metadata nuspec sebagai gantinya)
  • File ikon (iconUrl tidak digunakan lagi menggunakan icon elemen metadata nuspec sebagai gantinya)
  • Daftar dependensi dan referensi
  • Tag yang membantu pencarian galeri

Berikut ini adalah file umum (tetapi fiktif), .nuspec dengan komentar yang menjelaskan properti:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <!-- Identifier that must be unique within the hosting gallery -->
        <id>Contoso.Utility.UsefulStuff</id>

        <!-- Package version number that is used when resolving dependencies -->
        <version>1.8.3</version>

        <!-- Authors contain text that appears directly on the gallery -->
        <authors>Dejana Tesic, Rajeev Dey</authors>

        <!-- 
            Owners are typically nuget.org identities that allow gallery
            users to easily find other packages by the same owners.  
        -->
        <owners>dejanatc, rjdey</owners>
        
         <!-- Project URL provides a link for the gallery -->
        <projectUrl>http://github.com/contoso/UsefulStuff</projectUrl>

         <!-- License information is displayed on the gallery -->
        <license type="expression">Apache-2.0</license>
        

        <!-- Icon is used in Visual Studio's package manager UI -->
        <icon>icon.png</icon>

        <!-- 
            If true, this value prompts the user to accept the license when
            installing the package. 
        -->
        <requireLicenseAcceptance>false</requireLicenseAcceptance>

        <!-- Any details about this particular release -->
        <releaseNotes>Bug fixes and performance improvements</releaseNotes>

        <!-- 
            The description can be used in package manager UI. Note that the
            nuget.org gallery uses information you add in the portal. 
        -->
        <description>Core utility functions for web applications</description>

        <!-- Copyright information -->
        <copyright>Copyright ©2016 Contoso Corporation</copyright>

        <!-- Tags appear in the gallery and can be used for tag searches -->
        <tags>web utility http json url parsing</tags>

        <!-- Dependencies are automatically installed when the package is installed -->
        <dependencies>
            <dependency id="Newtonsoft.Json" version="9.0" />
        </dependencies>
    </metadata>

    <!-- A readme.txt to display when the package is installed -->
    <files>
        <file src="readme.txt" target="" />
        <file src="icon.png" target="" />
    </files>
</package>

Untuk detail tentang mendeklarasikan dependensi dan menentukan nomor versi, lihat packages.config dan Penerapan versi paket. Dimungkinkan juga untuk memunculkan aset dari dependensi langsung dalam paket dengan menggunakan include atribut dan exclude pada dependency elemen . Lihat Referensi .nuspec - Dependensi.

Karena manifes disertakan dalam paket yang dibuat darinya, Anda dapat menemukan sejumlah contoh tambahan dengan memeriksa paket yang ada. Sumber yang baik adalah folder paket global di komputer Anda, lokasi yang dikembalikan oleh perintah berikut:

nuget locals -list global-packages

Masuk ke folder package\version apa pun, salin .nupkg file ke .zip file, lalu buka file tersebut .zip dan periksa di .nuspec dalamnya.

Catatan

Saat membuat .nuspec dari proyek Visual Studio, manifes berisi token yang diganti dengan informasi dari proyek saat paket dibuat. Lihat Membuat .nuspec dari proyek Visual Studio.

Membuat file .nuspec

Membuat manifes lengkap biasanya dimulai dengan file dasar .nuspec yang dihasilkan melalui salah satu metode berikut:

Anda kemudian mengedit file dengan tangan sehingga menjelaskan konten yang tepat yang Anda inginkan dalam paket akhir.

Penting

File yang dihasilkan berisi tempat penampung yang harus dimodifikasi .nuspec sebelum membuat paket dengan nuget pack perintah . Perintah tersebut .nuspec gagal jika berisi tempat penampung apa pun.

Dari direktori kerja berbasis konvensi

Karena paket NuGet hanyalah file ZIP yang telah diganti namanya dengan .nupkg ekstensi, seringkali paling mudah untuk membuat struktur folder yang Anda inginkan pada sistem file lokal Anda, lalu membuat file langsung dari struktur tersebut .nuspec . Perintah nuget pack kemudian secara otomatis menambahkan semua file dalam struktur folder tersebut (tidak termasuk folder apa pun yang dimulai dengan ., memungkinkan Anda untuk menyimpan file privat dalam struktur yang sama).

Keuntungan dari pendekatan ini adalah Anda tidak perlu menentukan dalam manifes file mana yang ingin Anda sertakan dalam paket (seperti yang dijelaskan nanti dalam topik ini). Anda cukup membuat proses build menghasilkan struktur folder yang tepat yang masuk ke paket, dan Anda dapat dengan mudah menyertakan file lain yang mungkin bukan bagian dari proyek jika tidak:

  • Konten dan kode sumber yang harus disuntikkan ke dalam proyek target.
  • Skrip PowerShell
  • Transformasi ke konfigurasi dan file kode sumber yang ada dalam proyek.

Konvensi folder adalah sebagai berikut:

Folder Deskripsi Tindakan saat penginstalan paket
(root) Lokasi untuk readme.txt Visual Studio menampilkan file readme.txt di akar paket saat paket diinstal.
lib/{tfm} File Assembly (.dll), dokumentasi (.xml), dan simbol (.pdb) untuk Moniker Kerangka Kerja Target (TFM) yang diberikan Rakitan ditambahkan sebagai referensi untuk kompilasi serta runtime; .xml dan .pdb disalin ke dalam folder proyek. Lihat Mendukung beberapa kerangka kerja target untuk membuat sub-folder khusus target kerangka kerja.
ref/{tfm} File Assembly (.dll), dan simbol (.pdb) untuk Moniker Kerangka Kerja Target (TFM) yang diberikan Rakitan ditambahkan sebagai referensi hanya untuk waktu kompilasi; Jadi tidak ada yang akan disalin ke dalam folder bin proyek.
runtimes Rakitan khusus arsitektur (.dll), simbol (.pdb), dan file sumber daya asli (.pri) Rakitan ditambahkan sebagai referensi hanya untuk runtime; file lain disalin ke dalam folder proyek. Harus selalu ada perakitan khusus (TFM) AnyCPU yang sesuai di bawah /ref/{tfm} folder untuk menyediakan rakitan waktu kompilasi yang sesuai. Lihat Mendukung beberapa kerangka kerja target.
konten File arbitrer Isi disalin ke akar proyek. Anggap folder konten sebagai akar aplikasi target yang pada akhirnya mengonsumsi paket. Agar paket menambahkan gambar di folder /images aplikasi, letakkan di folder konten/gambar paket.
build (3.x+) MSBuild .targets dan .props file Secara otomatis dimasukkan ke dalam proyek.
buildMultiTargeting (4.0+) MSBuild .targets dan .props file untuk penargetan lintas kerangka kerja Secara otomatis dimasukkan ke dalam proyek.
buildTransitive (5.0+) MSBuild .targets dan .props file yang mengalir secara transitif ke proyek apa pun yang mengkonsumsi. Lihat halaman fitur. Secara otomatis dimasukkan ke dalam proyek.
alat Skrip dan program Powershell yang dapat diakses dari Package Manager Console Folder tools ditambahkan ke PATH variabel lingkungan hanya untuk Konsol Manajer Paket (Khususnya, bukan sebagaimana PATH diatur untuk MSBuild saat membangun proyek).

Karena struktur folder Anda dapat berisi sejumlah rakitan untuk sejumlah kerangka kerja target, metode ini diperlukan saat membuat paket yang mendukung beberapa kerangka kerja.

Bagaimanapun, setelah Anda memiliki struktur folder yang diinginkan, jalankan perintah berikut di folder tersebut .nuspec untuk membuat file:

nuget spec

Sekali lagi, yang dihasilkan .nuspec tidak berisi referensi eksplisit ke file dalam struktur folder. NuGet secara otomatis menyertakan semua file saat paket dibuat. Namun, Anda masih perlu mengedit nilai tempat penampung di bagian lain dari manifes.

Dari DLL rakitan

Dalam kasus sederhana membuat paket dari rakitan, Anda dapat membuat .nuspec file dari metadata di rakitan menggunakan perintah berikut:

nuget spec <assembly-name>.dll

Menggunakan formulir ini menggantikan beberapa tempat penampung dalam manifes dengan nilai tertentu dari perakitan. Misalnya, <id> properti diatur ke nama rakitan, dan <version> diatur ke versi rakitan. Properti lain dalam manifes, bagaimanapun, tidak memiliki nilai yang cocok dalam perakitan dan dengan demikian masih berisi tempat penampung.

Dari proyek Visual Studio

.nuspec Membuat dari .csproj file atau .vbproj nyaman karena paket lain yang telah diinstal ke dalam proyek tersebut secara otomatis dirujuk sebagai dependensi. Cukup gunakan perintah berikut di folder yang sama dengan file proyek:

# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget spec

File yang <project-name>.nuspec dihasilkan berisi token yang diganti pada waktu pengemasan dengan nilai dari proyek, termasuk referensi ke paket lain yang telah diinstal.

Jika Anda memiliki dependensi paket untuk disertakan dalam .nuspec, sebagai gantinya gunakan nuget pack, dan dapatkan file .nuspec dari dalam file .nupkg yang dihasilkan. Misalnya, gunakan perintah berikut.

# Use in a folder containing a project file <project-name>.csproj or <project-name>.vbproj
nuget pack myproject.csproj

Token dibatasi oleh $ simbol di kedua sisi properti proyek. Misalnya, <id> nilai dalam manifes yang dihasilkan dengan cara ini biasanya muncul sebagai berikut:

<id>$id$</id>

Token ini diganti dengan AssemblyName nilai dari file proyek pada waktu pengemasan. Untuk pemetaan nilai proyek ke .nuspec token yang tepat, lihat referensi Token Pengganti.

Token meringankan Anda dari kebutuhan untuk memperbarui nilai penting seperti nomor versi di .nuspec saat Anda memperbarui proyek. (Anda selalu dapat mengganti token dengan nilai harfiah, jika diinginkan).

Perhatikan bahwa ada beberapa opsi pengemasan tambahan yang tersedia saat bekerja dari proyek Visual Studio, seperti yang dijelaskan dalam Menjalankan paket nuget untuk menghasilkan file .nupkg nanti.

Paket tingkat solusi

NuGet 2.x saja. Tidak tersedia di NuGet 3.0+.

NuGet 2.x mendukung gagasan paket tingkat solusi yang menginstal alat atau perintah tambahan untuk Konsol tools Manajer Paket (konten folder), tetapi tidak menambahkan referensi, konten, atau kustomisasi build ke proyek apa pun dalam solusi. Paket tersebut tidak berisi file dalam folder langsung lib, , atau build , dan tidak ada dependensinya yang memiliki file di folder , , contentatau build masing-masinglibcontent.

NuGet melacak paket tingkat solusi yang packages.config diinstal dalam file di .nuget folder, bukan file proyek packages.config .

File baru dengan nilai default

Perintah berikut membuat manifes default dengan tempat penampung, yang memastikan Anda memulai dengan struktur file yang tepat:

nuget spec [<package-name>]

Jika Anda menghilangkan <nama> paket, file yang dihasilkan adalah Package.nuspec. Jika Anda memberikan nama seperti Contoso.Utility.UsefulStuff, filenya adalah Contoso.Utility.UsefulStuff.nuspec.

Yang dihasilkan .nuspec berisi tempat penampung untuk nilai seperti projectUrl. Pastikan untuk mengedit file sebelum menggunakannya untuk membuat file akhir .nupkg .

Pilih pengidentifikasi paket unik dan atur nomor versi

Pengidentifikasi paket (<id> elemen) dan nomor versi (<version> elemen) adalah dua nilai terpenting dalam manifes karena secara unik mengidentifikasi kode yang tepat yang terkandung dalam paket.

Praktik terbaik untuk pengidentifikasi paket:

  • Keunikan: Pengidentifikasi harus unik di seluruh nuget.org atau galeri apa pun yang menghosting paket. Sebelum memutuskan pengidentifikasi, cari galeri yang berlaku untuk memeriksa apakah nama sudah digunakan. Untuk menghindari konflik, pola yang baik adalah menggunakan nama perusahaan Anda sebagai bagian pertama dari pengidentifikasi, seperti Contoso..
  • Nama seperti namespace layanan: Ikuti pola yang mirip dengan namespace di .NET, menggunakan notasi titik alih-alih tanda hubung. Misalnya, gunakan Contoso.Utility.UsefulStuff daripada Contoso-Utility-UsefulStuff atau Contoso_Utility_UsefulStuff. Konsumen juga merasa berguna ketika pengidentifikasi paket cocok dengan namespace yang digunakan dalam kode.
  • Paket Sampel: Jika Anda menghasilkan paket kode sampel yang menunjukkan cara menggunakan paket lain, lampirkan .Sample sebagai akhiran ke pengidentifikasi, seperti dalam Contoso.Utility.UsefulStuff.Sample. (Paket sampel tentu saja akan memiliki dependensi pada paket lain.) Saat membuat paket sampel, gunakan metode direktori kerja berbasis konvensi yang dijelaskan sebelumnya. content Di folder , atur kode sampel dalam folder yang disebut \Samples\<identifier> sebagai di \Samples\Contoso.Utility.UsefulStuff.Sample.

Praktik terbaik untuk versi paket:

  • Secara umum, atur versi paket agar sesuai dengan pustaka, meskipun ini tidak diperlukan secara ketat. Ini adalah masalah sederhana ketika Anda membatasi paket ke satu rakitan, seperti yang dijelaskan sebelumnya dalam Memutuskan rakitan mana yang akan dikemas. Secara keseluruhan, ingatlah bahwa NuGet sendiri menangani versi paket saat menyelesaikan dependensi, bukan versi rakitan.
  • Saat menggunakan skema versi non-standar, pastikan untuk mempertimbangkan aturan penerapan versi NuGet seperti yang dijelaskan dalam Penerapan versi Paket.

Serangkaian posting blog singkat berikut ini juga berguna untuk memahami penerapan versi:

Menambahkan readme dan file lainnya

Untuk secara langsung menentukan file yang akan disertakan dalam paket, gunakan simpul <files> dalam .nuspec file, yang mengikuti<metadata> tag:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
    <!-- ... -->
    </metadata>
    <files>
        <!-- Add a readme -->
        <file src="readme.txt" target="" />

        <!-- Add files from an arbitrary folder that's not necessarily in the project -->
        <file src="..\..\SomeRoot\**\*.*" target="" />
    </files>
</package>

Tip

Saat menggunakan pendekatan direktori kerja berbasis konvensi, Anda dapat menempatkan readme.txt di akar paket dan konten lainnya di content folder. Tidak ada <file> elemen yang diperlukan dalam manifes.

Saat Anda menyertakan file bernama readme.txt di akar paket, Visual Studio menampilkan konten file tersebut sebagai teks biasa segera setelah menginstal paket secara langsung. (File readme tidak ditampilkan untuk paket yang diinstal sebagai dependensi). Misalnya, berikut adalah bagaimana readme untuk paket HtmlAgilityPack muncul:

The display of a readme file for a NuGet package upon installation

Catatan

Jika Anda menyertakan simpul kosong <files> dalam .nuspec file, NuGet tidak menyertakan konten lain dalam paket selain apa yang ada di lib folder.

Menyertakan alat peraga dan target MSBuild dalam paket

Dalam beberapa kasus, Anda mungkin ingin menambahkan target atau properti build kustom dalam proyek yang menggunakan paket Anda, seperti menjalankan alat atau proses kustom selama build. Anda dapat mempelajari selengkapnya tentang alat peraga dan target MSBuild dalam paket NuGet

Buat <package_id>.targets atau <package_id>.props (seperti Contoso.Utility.UsefulStuff.targets) dalam folder build proyek.

Kemudian dalam .nuspec file, pastikan untuk merujuk ke file-file ini di simpul <files> :

<?xml version="1.0"?>
<package >
    <metadata minClientVersion="2.5">
    <!-- ... -->
    </metadata>
    <files>
        <!-- Include everything in \build -->
        <file src="build\**" target="build" />

        <!-- Other files -->
        <!-- ... -->
    </files>
</package>

Ketika paket ditambahkan ke proyek, NuGet akan secara otomatis menyertakan alat peraga dan target ini.

Jalankan paket nuget untuk menghasilkan file .nupkg

Saat menggunakan assembly atau direktori kerja berbasis konvensi, buat paket dengan menjalankan nuget pack dengan file Anda .nuspec , mengganti <project-name> dengan nama file spesifik Anda:

nuget pack <project-name>.nuspec

Saat menggunakan proyek Visual Studio, jalankan nuget pack dengan file proyek Anda, yang secara otomatis memuat file proyek .nuspec dan mengganti token apa pun di dalamnya menggunakan nilai dalam file proyek:

nuget pack <project-name>.csproj

Catatan

Menggunakan file proyek secara langsung diperlukan untuk penggantian token karena proyek adalah sumber nilai token. Penggantian token tidak terjadi jika Anda menggunakan nuget pack dengan .nuspec file.

Dalam semua kasus, nuget pack kecualikan folder yang dimulai dengan titik, seperti .git atau .hg.

NuGet menunjukkan apakah ada kesalahan dalam .nuspec file yang perlu dikoreksi, seperti lupa mengubah nilai tempat penampung dalam manifes.

Setelah nuget pack berhasil, Anda memiliki .nupkg file yang dapat Anda terbitkan ke galeri yang sesuai seperti yang dijelaskan dalam Menerbitkan Paket.

Tip

Cara yang berguna untuk memeriksa paket setelah membuatnya adalah dengan membukanya di alat Penjelajah Paket. Ini memberi Anda tampilan grafis konten paket dan manifesnya. Anda juga dapat mengganti nama file yang dihasilkan .nupkg menjadi .zip file dan menjelajahi kontennya secara langsung.

Opsi tambahan

Anda dapat menggunakan berbagai sakelar baris perintah dengan nuget pack untuk mengecualikan file, mengambil alih nomor versi dalam manifes, dan mengubah folder output, di antara fitur lainnya. Untuk daftar lengkapnya, lihat referensi perintah paket.

Opsi berikut adalah beberapa yang umum dengan proyek Visual Studio:

  • Proyek yang dirujuk: Jika proyek mereferensikan proyek lain, Anda dapat menambahkan proyek yang dirujuk sebagai bagian dari paket, atau sebagai dependensi, dengan menggunakan -IncludeReferencedProjects opsi :

    nuget pack MyProject.csproj -IncludeReferencedProjects
    

    Proses penyertaan ini rekursif, jadi jika MyProject.csproj mereferensikan proyek B dan C, dan proyek tersebut mereferensikan D, E, dan F, maka file dari B, C, D, E, dan F disertakan dalam paket.

    Jika proyek yang dirujuk menyertakan .nuspec file sendiri, Maka NuGet menambahkan proyek yang dirujuk sebagai dependensi sebagai gantinya. Anda perlu mengemas dan menerbitkan proyek tersebut secara terpisah.

  • Konfigurasi build: Secara default, NuGet menggunakan konfigurasi build default yang diatur dalam file proyek, biasanya Debug. Untuk mengemas file dari konfigurasi build yang berbeda, seperti Rilis, gunakan -properties opsi dengan konfigurasi:

    nuget pack MyProject.csproj -properties Configuration=Release
    
  • Simbol: untuk menyertakan simbol yang memungkinkan konsumen untuk menelusuri kode paket Anda di debugger, gunakan -Symbols opsi :

    nuget pack MyProject.csproj -symbols
    

Penginstalan paket pengujian

Sebelum menerbitkan paket, Anda biasanya ingin menguji proses penginstalan paket ke dalam proyek. Pengujian memastikan bahwa semua file yang diperlukan berakhir di tempat yang benar dalam proyek.

Anda dapat menguji penginstalan secara manual di Visual Studio atau di baris perintah menggunakan langkah-langkah penginstalan paket normal.

Untuk pengujian otomatis, proses dasarnya adalah sebagai berikut:

  1. .nupkg Salin file ke folder lokal.
  2. Tambahkan folder ke sumber paket Anda menggunakan nuget sources add -name <name> -source <path> perintah (lihat sumber nuget). Perhatikan bahwa Anda hanya perlu mengatur sumber lokal ini sekali pada komputer tertentu.
  3. Instal paket dari sumber tersebut menggunakan nuget install <packageID> -source <name> di mana <name> cocok dengan nama sumber Anda seperti yang diberikan kepada nuget sources. Menentukan sumber memastikan bahwa paket diinstal dari sumber tersebut saja.
  4. Periksa sistem file Anda untuk memeriksa apakah file terinstal dengan benar.

Langkah berikutnya

Setelah membuat paket, yang merupakan .nupkg file, Anda dapat menerbitkannya ke galeri pilihan Anda seperti yang dijelaskan di Menerbitkan Paket.

Anda mungkin juga ingin memperluas kemampuan paket Anda atau mendukung skenario lain seperti yang dijelaskan dalam topik berikut:

Terakhir, ada jenis paket tambahan yang perlu diperhatikan: