Sembol paketleri oluşturma (.snupkg)
İyi bir hata ayıklama deneyimi, derlenen ile kaynak kod arasındaki ilişki, yerel değişkenlerin adları, yığın izlemeleri ve daha fazlası gibi kritik bilgiler sağladığından hata ayıklama simgelerinin varlığına dayanır. Bu sembolleri dağıtmak ve NuGet paketlerinizin hata ayıklama deneyimini geliştirmek için sembol paketlerini (.snupkg) kullanabilirsiniz.
Hata ayıklama simgelerini kitaplığınızın tüketicilerine sunabilecek tek stratejinin sembol paketi olmadığını unutmayın. Veya içinde
dll
aşağıdaki proje özelliğiyle de mümkündürembed
:exe
<DebugType>embedded</DebugType>
Önkoşullar
gerekli NuGet protokollerini uygulayan v4.9.0 veya üzeri ya da dotnet CLI v2.2.0 veya üzerini nuget.exe.
Sembol paketi oluşturma
dotnet CLI veya MSBuild kullanıyorsanız, .nupkg dosyasına ek olarak bir .snupkg dosyası oluşturmak için ve SymbolPackageFormat
özelliklerini ayarlamanız IncludeSymbols
gerekir.
.csproj dosyanıza aşağıdaki özellikleri ekleyin:
<PropertyGroup> <IncludeSymbols>true</IncludeSymbols> <SymbolPackageFormat>snupkg</SymbolPackageFormat> </PropertyGroup>
Veya komut satırında şu özellikleri belirtin:
dotnet pack MyPackage.csproj -p:IncludeSymbols=true -p:SymbolPackageFormat=snupkg
veya
msbuild MyPackage.csproj /t:pack /p:IncludeSymbols=true /p:SymbolPackageFormat=snupkg
NuGet.exe kullanıyorsanız, .nupkg dosyasına ek olarak bir .snupkg dosyası oluşturmak için aşağıdaki komutları kullanabilirsiniz:
nuget pack MyPackage.nuspec -Symbols -SymbolPackageFormat snupkg
nuget pack MyPackage.csproj -Symbols -SymbolPackageFormat snupkg
özelliği iki SymbolPackageFormat
değerden birine sahip olabilir: symbols.nupkg
(varsayılan) veya snupkg
. Bu özellik belirtilmezse, eski bir sembol paketi oluşturulur.
Not
Eski biçim .symbols.nupkg
hala desteklenir, ancak yalnızca yerel paketler gibi uyumluluk nedenleriyle (bkz . Eski Sembol Paketleri). NuGet.org'un sembol sunucusu yalnızca yeni sembol paketi biçimini kabul eder - .snupkg
.
Sembol paketi yayımlama
Not
Azure Devops Artifacts şu anda dosyalar aracılığıyla .snupkg
hata ayıklamayı desteklememektedir.
Kolaylık sağlamak için öncelikle API anahtarınızı NuGet ile kaydedin (bkz . paket yayımlama).
nuget SetApiKey Your-API-Key
Birincil paketinizi nuget.org yayımladıktan sonra sembol paketini aşağıdaki gibi gönderebilirsiniz.
nuget push MyPackage.snupkg
Ayrıca, aşağıdaki komutu kullanarak hem birincil hem de sembol paketlerini aynı anda gönderebilirsiniz. Hem .nupkg hem de .snupkg dosyalarının geçerli klasörde bulunması gerekir.
nuget push MyPackage.nupkg
NuGet her iki paketi de nuget.org yayımlar. MyPackage.nupkg
önce yayımlanacak, ardından MyPackage.snupkg
da yayınlanacaktır.
Not
Sembol paketi yayımlanmadıysa, NuGet.org kaynağını olarak https://api.nuget.org/v3/index.json
yapılandırdığınızdan denetleyin. Sembol paketi yayımlama yalnızca NuGet V3 API'sinde desteklenir.
NuGet.org sembol sunucusu
NuGet.org kendi sembolleri sunucu deposunu destekler ve yalnızca yeni sembol paketi biçimini kabul eder - .snupkg
. Paket tüketicileri, Visual Studio'da sembol kaynaklarına ekleyerek https://symbols.nuget.org/download/symbols
sembol sunucusuna nuget.org yayımlanan simgeleri kullanabilir ve bu da Visual Studio hata ayıklayıcısında paket koduna adım atılmasına olanak tanır. Bu işlemle ilgili ayrıntılar için bkz . Visual Studio hata ayıklayıcısında sembol (.pdb) ve kaynak dosyaları belirtme.
NuGet.org sembol paketi kısıtlamaları
NuGet.org, sembol paketleri için aşağıdaki kısıtlamalara sahiptir:
- Sembol paketlerinde yalnızca aşağıdaki dosya uzantılarına izin verilir:
.pdb
,.nuspec
,.xml
,.psmdcp
, ,.rels
,.p7s
- NuGet.org'un sembol sunucusunda yalnızca yönetilen Taşınabilir PDB'ler desteklenir.
- PDB'lerin ve ilişkili .nupkg DLL'lerinin Visual Studio sürüm 15.9 veya üzerinde derleyiciyle derlenmiş olması gerekir (bkz. PDB şifreleme karması)
NuGet.org'de yayımlanan sembol paketleri, bu kısıtlamalar karşılanmazsa doğrulama başarısız olur.
Not
C++ projeleri gibi yerel projeler, Taşınabilir PDB'ler yerine Windows PDB'leri üretir. Bunlar NuGet.org'un sembol sunucusu tarafından desteklenmez. Lütfen bunun yerine Eski Sembol Paketlerini kullanın.
Sembol paketi doğrulama ve dizin oluşturma
NuGet.org'da yayımlanan sembol paketleri, kötü amaçlı yazılım taraması da dahil olmak üzere çeşitli doğrulamalardan geçer. Bir paket doğrulama denetiminde başarısız olursa paket ayrıntıları sayfasında bir hata iletisi görüntülenir. Ayrıca paketin sahipleri, tanımlanan sorunların nasıl düzeltileceğine ilişkin yönergeleri içeren bir e-posta alır.
Sembol paketi tüm doğrulamaları geçtiğinde, semboller NuGet.org'un sembol sunucuları tarafından dizine alınır ve kullanım için kullanılabilir.
Paket doğrulama ve dizin oluşturma işlemleri genellikle 15 dakikadan daha uzun sürer. Paket yayımlama işlemi beklenenden uzun sürüyorsa, NuGet.org kesinti yaşanıp yaşamamadığını denetlemek için status.nuget.org adresini ziyaret edin. Tüm sistemler çalışır durumdaysa ve paket bir saat içinde başarıyla yayımlanmadıysa lütfen nuget.org oturum açın ve paket ayrıntıları sayfasındaki Desteğe Başvurun bağlantısını kullanarak bizimle iletişime geçin.
Sembol paketi yapısı
Sembol paketi (.snupkg) aşağıdaki özelliklere sahiptir:
.snupkg, karşılık gelen NuGet paketi (.nupkg) ile aynı kimliğe ve sürüme sahiptir.
.snupkg, DLL'ler/EXE'ler yerine karşılık gelen PDB'lerin aynı klasör hiyerarşisine dahil edilmesi ayrımıyla tüm DLL veya EXE dosyaları için karşılık gelen .nupkg ile aynı klasör yapısına sahiptir. PDB dışındaki uzantılara sahip dosyalar ve klasörler snupkg'nin dışında bırakılır.
Sembol paketinin .nuspec dosyası paket türüne
SymbolsPackage
sahiptir:<packageTypes> <packageType name="SymbolsPackage"/> </packageTypes>
Bir yazar nupkg ve snupkg'larını oluşturmak için özel bir nuspec kullanmaya karar verirse, snupkg'ın aynı klasör hiyerarşisine ve 2'de ayrıntılı olarak belirtilen dosyalarına sahip olması gerekir).
Aşağıdaki alanlar, snupkg'ın nuspec'inden dışlanır:
authors
,owners
,requireLicenseAcceptance
,license type
,licenseUrl
veicon
.öğesini kullanmayın
<license>
. .snupkg, karşılık gelen .nupkg ile aynı lisans kapsamındadır.
Ayrıca bkz.
.NET derlemelerinin kaynak kodunda hata ayıklamasını etkinleştirmek için Kaynak Bağlantısı'nı kullanmayı göz önünde bulundurun. Daha fazla bilgi için lütfen Kaynak Bağlantı kılavuzuna bakın.
Sembol paketleri hakkında daha fazla bilgi için lütfen NuGet Paket Hata Ayıklama ve Sembol geliştirmeleri tasarım belirtimine bakın.