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.

  1. Kolaylık sağlamak için öncelikle API anahtarınızı NuGet ile kaydedin (bkz . paket yayımlama).

    nuget SetApiKey Your-API-Key
    
  2. Birincil paketinizi nuget.org yayımladıktan sonra sembol paketini aşağıdaki gibi gönderebilirsiniz.

    nuget push MyPackage.snupkg
    
  3. 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.snupkgda yayınlanacaktır.

Not

Sembol paketi yayımlanmadıysa, NuGet.org kaynağını olarak https://api.nuget.org/v3/index.jsonyapı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:

  1. .snupkg, karşılık gelen NuGet paketi (.nupkg) ile aynı kimliğe ve sürüme sahiptir.

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

  3. Sembol paketinin .nuspec dosyası paket türüne SymbolsPackage sahiptir:

    <packageTypes>
       <packageType name="SymbolsPackage"/>
    </packageTypes>
    
  4. 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).

  5. Aşağıdaki alanlar, snupkg'ın nuspec'inden dışlanır: authors, owners, requireLicenseAcceptance, license type, licenseUrlve icon.

  6. öğ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.