Aracılığıyla paylaş


NuGet

NuGet, .NET ekosistemi için bir paket yöneticisidir ve geliştiricilerin .NET açık kaynak kitaplıklarını bulup edinmelerinin birincil yoludur. Microsoft tarafından NuGet paketlerini barındırmak için sağlanan ücretsiz bir hizmet olan NuGet.org, genel NuGet paketlerinin birincil ana bilgisayarıdır, ancak MyGet ve Azure Artifactsgibi özel NuGet hizmetlerinde yayımlayabilirsiniz.

NuGet

NuGet paketi oluşturma

NuGet paketi (*.nupkg), .NET derlemelerini ve ilişkili meta verileri içeren bir zip dosyasıdır.

NuGet paketi oluşturmanın iki ana yolu vardır. Daha yeni ve önerilen yol, SDK stilindeki bir projeden (içeriği <Project Sdk="Microsoft.NET.Sdk">ile başlayan proje dosyası) bir paket oluşturmaktır. Derlemeler ve hedefler pakete otomatik olarak eklenir ve kalan meta veriler paket adı ve sürüm numarası gibi MSBuild dosyasına eklenir. dotnet pack komutuyla derlemek, derlemeler yerine bir *.nupkg dosyası oluşturur.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AssemblyName>Contoso.Api</AssemblyName>
    <PackageVersion>1.1.0</PackageVersion>
    <Authors>John Doe</Authors>
  </PropertyGroup>
</Project>

NuGet paketi oluşturmanın eski yolu, *.nuspec bir dosya ve nuget.exe komut satırı aracıdır. Nuspec dosyası size büyük denetim sağlar, ancak son NuGet paketine eklenecek derlemeleri ve hedefleri dikkatli bir şekilde belirtmeniz gerekir. Hata yapmak veya değişiklik yaparken birinin nuspec'i güncelleştirmeyi unutması kolaydır. Nuspec'in avantajı, henüz SDK stili bir proje dosyasını desteklemeyen çerçeveler için NuGet paketleri oluşturmak için bunu kullanabilmenizdir.

✔️ NuGet paketini oluşturmak için SDK stilinde bir proje dosyası kullanmayı göz önünde bulundurun.

Paket bağımlılıkları

NuGet paket bağımlılıkları, Bağımlılıklar makalesinde ayrıntılı olarak ele alınmıştır.

Önemli NuGet paketi meta verileri

NuGet paketi, birçokmeta veri özelliğini destekler. Aşağıdaki tablo, NuGet.org üzerindeki her paketin sağlaması gereken temel meta verileri içerir:

MSBuild Özellik adı Nuspec adı Açıklama
PackageId id Paket tanımlayıcısı. ölçütlerini karşılıyorsa, tanımlayıcıdan bir ön ek ayrılabilir.
PackageVersion version NuGet paket sürümü. Daha fazla bilgi için bkz. NuGet paket sürümü.
Title title Paketin insan dostu bir başlığı. Varsayılan olarak PackageIdolur.
Description description Kullanıcı arabiriminde görüntülenen paketin uzun bir açıklaması.
Authors authors nuget.org profil adlarını eşleştiren, paket yazarlarının virgülle ayrılmış listesi.
PackageTags tags Paketi açıklayan etiketlerin ve anahtar sözcüklerin boşluk veya noktalı virgülle ayrılmış listesi. Etiketler, paketler aranırken kullanılır.
PackageIcon icon Paket simgesi olarak kullanılacak bir paketteki görüntünün yolu. icon meta verilerihakkında daha fazla bilgi edinin.
PackageProjectUrl projectUrl Proje giriş sayfasının veya kaynak deposunun URL'si.
PackageLicenseExpression license Proje lisansının SPDX tanımlayıcısı. Yalnızca OSI ve FSF onaylı lisanslar bir tanımlayıcı kullanabilir. Diğer lisanslar PackageLicenseFilekullanmalıdır. license meta verilerihakkında daha fazla bilgi edinin.

Önemli

Lisansı olmayan bir proje varsayılan olarak münhasır telif hakkıolur ve diğer kişilerin kullanmasını yasal olarak imkansız hale getirir.

✔️ NuGet'in ön ek ayırma ölçütü olan 'ı karşılayan bir ön eke sahip bir NuGet paket adı seçmeyi düşünün.

✔️ Paket simgeniz için HTTPS href KULLANIN.

NuGet.org GIBI siteler HTTPS etkinken çalıştırılır ve HTTPS olmayan bir görüntü görüntülenirse karma içerik uyarısı oluşturulur.

✔️ DO, en iyi görüntüleme sonuçları için 64x64 boyutlarında ve saydam arka plana sahip bir paket simgesi kullanın.

✔️ Derlemelerinize ve NuGet paketinize kaynak denetimi meta verileri eklemek için kaynak bağlantısını yapılandırmayı düşünün.

Kaynak Bağlantı, NuGet paketine otomatik olarak RepositoryUrl ve RepositoryType meta verileri ekler. Kaynak Bağlantısı ayrıca paketin oluşturulduğu kaynak kodu hakkında da bilgi ekler. Örneğin, Git deposundan oluşturulan bir pakette işleme karması meta veri olarak eklenir.

Ön sürüm paketleri

Sürüm soneki içeren NuGet paketleri, yayın öncesi olarakkabul edilir. Varsayılan olarak, bir kullanıcı ön sürüm paketlerini kabul etmediği sürece NuGet Paket Yöneticisi kullanıcı arabirimi kararlı sürümleri gösterir ve bu da ön sürüm paketlerini sınırlı kullanıcı testi için ideal hale getirir.

<PackageVersion>1.0.1-beta1</PackageVersion>

Not olarak

Kararlı bir paket yayın öncesi pakete bağımlı olamaz. Kendi paketinizi yayından önce oluşturmanız veya eski bir kararlı sürüme bağlı olmanız gerekir.

NuGet yayın öncesi paket bağımlılığıNuGet ön sürüm paketi bağımlılığı

✔️ Test, önizleme veya deneme yaparken bir ön sürüm paketi yayımlayın.

Kararlı bir paket hazır olduğunda, diğer kararlı paketlerin başvurabilmesi için yayımlayın.

Sembol paketleri

Sembol dosyaları (*.pdb) derlemelerle birlikte .NET derleyicisi tarafından oluşturulur. Sembol dosyaları, çalışma yerlerini özgün kaynak koduyla eşler, böylece hata ayıklayıcı ile çalışırken kaynak kodunda adım adım ilerleyebilirsiniz. NuGet, .NET derlemelerini içeren ana paketin yanı sıra sembol dosyalarını içeren ayrı bir sembol paketi (*.snupkg) oluşturmayı destekler. Sembol paketleri fikri, bir sembol sunucusunda barındırılıyor olmaları ve yalnızca isteğe bağlı Olarak Visual Studio gibi bir araç tarafından indirilmeleridir.

NuGet.org kendi sembolleri sunucu deposunubarındırıyor. Geliştiriciler, Visual Studio 'dakisembol kaynaklarına https://symbols.nuget.org/download/symbols ekleyerek NuGet.org sembol sunucusunda yayımlanan simgeleri kullanabilir.

Önemli

NuGet.org sembol sunucusu yalnızca SDK stili projeler tarafından oluşturulan yeni taşınabilir sembol dosyalarını (*.pdb) destekler.

.NET kitaplığında hata ayıklarken NuGet.org sembol sunucusunu kullanmak için geliştiricilerin Visual Studio 2017 sürüm 15.9 veya sonraki bir sürümü olmalıdır.

Simge paketi oluşturmanın alternatifi, ana NuGet paketine sembol dosyaları eklemektir. Ana NuGet paketi daha büyük olacaktır, ancak eklenmiş sembol dosyaları geliştiricilerin NuGet.org sembol sunucusunu yapılandırmaları gerekmeyecek anlamına gelir. NuGet paketinizi SDK stilinde bir proje kullanarak oluşturuyorsanız, AllowedOutputExtensionsInPackageBuildOutputFolder özelliğini ayarlayarak sembol dosyalarını ekleyebilirsiniz:

<Project Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
    <!-- Include symbol files (*.pdb) in the built .nupkg -->
    <AllowedOutputExtensionsInPackageBuildOutputFolder>$(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
  </PropertyGroup>
</Project>

Simge dosyalarını eklemenin dezavantajı, SDK stili projeler kullanılarak derlenen .NET kitaplıkları için paket boyutunu yaklaşık 30% artırmalarıdır. Paket boyutu önemliyse, bunun yerine sembolleri bir sembol paketinde yayımlamanız gerekir.

✔️ Sembolleri NuGet.org için bir sembol paketi (*.snupkg) olarak yayımlamayı DÜŞÜNÜN

Sembol paketleri (*.snupkg), geliştiricilere ana paket boyutunu şişirmeden ve NuGet paketinde hata ayıklamayı amaçlamayanlar için geri yükleme performansını etkilemeden iyi bir isteğe bağlı hata ayıklama deneyimi sağlar.

Uyarı, kullanıcıların simge dosyalarını almak için IDE'lerinde NuGet sembol sunucusunu bulup yapılandırmaları gerekebileceğidir (tek seferlik kurulum olarak). Visual Studio 2019 sürüm 16.1, NuGet.org'un sembol sunucusunu varsayılan sembol sunucuları listesine ekledi.