Membuat paket simbol (.snupkg)
Pengalaman debugging yang baik bergantung pada keberadaan simbol debug karena mereka memberikan informasi penting seperti hubungan antara kode sumber dan yang dikompilasi, nama variabel lokal, jejak tumpukan, dan banyak lagi. Anda dapat menggunakan paket simbol (.snupkg) untuk mendistribusikan simbol ini dan meningkatkan pengalaman penelusuran kesalahan paket NuGet Anda.
Perhatikan bahwa paket simbol bukan satu-satunya strategi untuk membuat simbol debug tersedia untuk konsumen pustaka Anda. Dimungkinkan juga untuk
embed
mereka didll
atauexe
dengan properti proyek berikut:<DebugType>embedded</DebugType>
Prasyarat
nuget.exe v4.9.0 atau lebih tinggi atau dotnet CLI v2.2.0 atau lebih tinggi, yang menerapkan protokol NuGet yang diperlukan.
Membuat paket simbol
Jika Anda menggunakan dotnet CLI atau MSBuild, Anda perlu mengatur IncludeSymbols
properti dan SymbolPackageFormat
untuk membuat file .snupkg selain file .nupkg.
Tambahkan properti berikut ke file .csproj Anda:
<PropertyGroup> <IncludeSymbols>true</IncludeSymbols> <SymbolPackageFormat>snupkg</SymbolPackageFormat> </PropertyGroup>
Atau tentukan properti ini pada baris perintah:
dotnet pack MyPackage.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg
or
msbuild MyPackage.csproj /t:pack /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
Jika Anda menggunakan NuGet.exe, Anda dapat menggunakan perintah berikut untuk membuat file .snupkg selain file .nupkg:
nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg
nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg
Properti SymbolPackageFormat
dapat memiliki salah satu dari dua nilai: symbols.nupkg
(default) atau snupkg
. Jika properti ini tidak ditentukan, paket simbol warisan akan dibuat.
Catatan
Format .symbols.nupkg
warisan masih didukung tetapi hanya karena alasan kompatibilitas seperti paket asli (lihat Paket Simbol Warisan). Server simbol NuGet.org hanya menerima format paket simbol baru - .snupkg
.
Menerbitkan paket simbol
Catatan
Artefak Azure Devops saat ini tidak mendukung penelusuran kesalahan melalui .snupkg
file.
Untuk kenyamanan, pertama-tama simpan kunci API Anda dengan NuGet (lihat menerbitkan paket).
nuget SetApiKey Your-API-Key
Setelah menerbitkan paket utama Anda ke nuget.org, dorong paket simbol sebagai berikut.
nuget push MyPackage.snupkg
Anda juga dapat mendorong paket utama dan simbol secara bersamaan menggunakan perintah di bawah ini. File .nupkg dan .snupkg perlu ada di folder saat ini.
nuget push MyPackage.nupkg
NuGet akan menerbitkan kedua paket ke nuget.org. MyPackage.nupkg
akan diterbitkan terlebih dahulu, diikuti oleh MyPackage.snupkg
.
Catatan
Jika paket simbol tidak diterbitkan, periksa apakah Anda telah mengonfigurasi sumber NuGet.org sebagai https://api.nuget.org/v3/index.json
. Penerbitan paket simbol hanya didukung oleh API NuGet V3.
server simbol NuGet.org
NuGet.org mendukung repositori server simbolnya sendiri dan hanya menerima format paket simbol baru - .snupkg
. Konsumen paket dapat menggunakan simbol yang diterbitkan untuk nuget.org server simbol dengan menambahkan https://symbols.nuget.org/download/symbols
ke sumber simbol mereka di Visual Studio, yang memungkinkan melangkah ke kode paket di debugger Visual Studio. Lihat Menentukan simbol (.pdb) dan file sumber di debugger Visual Studio untuk detail tentang proses tersebut.
batasan paket simbol NuGet.org
NuGet.org memiliki batasan berikut untuk paket simbol:
- Hanya ekstensi file berikut yang diizinkan dalam paket simbol:
.pdb
, ,.nuspec
,.xml
.psmdcp
,.rels
,.p7s
- Hanya PDB Portabel terkelola yang didukung di server simbol NuGet.org.
- PDB dan DLL .nupkg terkait perlu dibuat dengan pengkompilasi di Visual Studio versi 15.9 atau lebih tinggi (lihat hash kripto PDB)
Paket simbol yang diterbitkan ke NuGet.org akan gagal validasi jika batasan ini tidak terpenuhi.
Catatan
Proyek asli, seperti proyek C++, menghasilkan PDB Windows alih-alih PDB Portabel. Ini tidak didukung oleh server simbol NuGet.org. Silakan gunakan Paket Simbol Warisan sebagai gantinya.
Validasi dan pengindeksan paket simbol
Paket simbol yang diterbitkan ke NuGet.org menjalani beberapa validasi, termasuk pemindaian malware. Jika paket gagal dalam pemeriksaan validasi, halaman detail paketnya akan menampilkan pesan kesalahan. Selain itu, pemilik paket akan menerima email dengan instruksi tentang cara memperbaiki masalah yang diidentifikasi.
Ketika paket simbol telah melewati semua validasi, simbol akan diindeks oleh server simbol NuGet.org dan akan tersedia untuk dikonsumsi.
Validasi dan pengindeksan paket biasanya memakan waktu di bawah 15 menit. Jika penerbitan paket membutuhkan waktu lebih lama dari yang diharapkan, kunjungi status.nuget.org untuk memeriksa apakah NuGet.org mengalami gangguan. Jika semua sistem beroperasi dan paket belum berhasil diterbitkan dalam waktu satu jam, silakan masuk ke nuget.org dan hubungi kami menggunakan tautan Dukungan Kontak di halaman detail paket.
Struktur paket simbol
Paket simbol (.snupkg) memiliki karakteristik berikut:
.snupkg memiliki id dan versi yang sama dengan paket NuGet yang sesuai (.nupkg).
.snupkg memiliki struktur folder yang sama dengan .nupkg yang sesuai untuk file DLL atau EXE dengan perbedaan bahwa alih-alih DLL/EXEs, PDB yang sesuai akan disertakan dalam hierarki folder yang sama. File dan folder dengan ekstensi selain PDB akan dibiarkan keluar dari snupkg.
File .nuspec paket simbol memiliki
SymbolsPackage
jenis paket:<packageTypes> <packageType name="SymbolsPackage"/> </packageTypes>
Jika penulis memutuskan untuk menggunakan nuspec kustom untuk membangun nupkg dan snupkg mereka, snupkg harus memiliki hierarki folder dan file yang sama yang dirinci dalam 2).
Bidang berikut akan dikecualikan dari nuspec snupkg:
authors
, ,owners
,requireLicenseAcceptance
license type
,licenseUrl
, danicon
.Jangan gunakan
<license>
elemen . .snupkg tercakup dalam lisensi yang sama dengan .nupkg yang sesuai.
Lihat juga
Pertimbangkan untuk menggunakan Tautan Sumber untuk mengaktifkan penelusuran kesalahan kode sumber rakitan .NET. Untuk informasi selengkapnya, silakan merujuk ke panduan Tautan Sumber.
Untuk informasi selengkapnya tentang paket simbol, silakan lihat spesifikasi desain Debugging Paket NuGet & Penyempurnaan Simbol.