Aracılığıyla paylaş


dotnet CLI ile NuGet paketi oluşturma

NuGet paketleri, geliştiricilerin projelerinde yeniden kullanabileceği kodu içerir. Kodunuzun ne yaptığı veya ne içerdiği fark etmeksizin, NuGet paketini oluşturmak için ya nuget.exe ya da dotnet.exe komut satırı aracını kullanırsınız.

Bu makalede , dotnet CLI kullanılarak bir paketin nasıl oluşturulacağı açıklanır. Visual Studio 2017'den başlayarak dotnet CLI tüm .NET ve .NET Core iş yüklerine dahil edilir. dotnet CLI veya diğer NuGet istemci araçlarını yüklemeniz gerekiyorsa bkz. NuGet istemci araçlarını yükleme.

Bu konu yalnızca .NET ve SDK stili biçimini kullanan diğer projeler için geçerlidir. Bu projeler için NuGet, proje dosyasındaki bilgileri kullanarak bir paket oluşturur. Hızlı başlangıç öğreticileri için bkz. Dotnet CLI ile paket oluşturma veya Visual Studio ile paket oluşturma.

MSBuild msbuild -t:pack komutu işlevsel olarak dotnet pack ile eşdeğerdir. MSBuild ile paket oluşturma hakkında daha fazla bilgi için bkz. MSBuild kullanarak NuGet paketi oluşturma.

Uyarı

Özellikleri ayarlama

komutunu kullanarak dotnet new classlib örnek bir sınıf kitaplığı projesi oluşturabilir ve kullanarak projeyi dotnet packpaketleyebilirsiniz. dotnet pack komutu aşağıdaki özellikleri kullanır. Proje dosyasında değerleri belirtmezseniz, komut varsayılan değerleri kullanır.

  • PackageId, paket tanımlayıcısı, nuget.org ve paketi barındıran diğer tüm hedefler arasında benzersiz olmalıdır. Bir değer belirtmezseniz, komut AssemblyName değerini kullanır.
  • Version, formda Major.Minor.Patch[-Suffix]-Suffix yayın öncesi sürümleri tanımlayan belirli bir sürüm numarasıdır. Belirtilmezse, varsayılan değer olur 1.0.0.
  • Authors paketin yazarlarıdır. Belirtilmezse, varsayılan değer olur AssemblyName.
  • Company şirket bilgileridir. Belirtilmezse, varsayılan değer değerdir Authors .
  • Product ürün bilgileridir. Belirtilmezse, varsayılan değer olur AssemblyName.

Visual Studio'da bu değerleri proje özelliklerinde ayarlayabilirsiniz. Çözüm Gezgini'nde projeye sağ tıklayın, Özellikler'i ve ardından Paket bölümünü seçin. Ayrıca özellikleri doğrudan .csproj veya başka bir proje dosyasına da ekleyebilirsiniz.

Aşağıdaki örnekte paket özellikleri eklenmiş bir proje dosyası gösterilmektedir.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <PackageId>UniqueID</PackageId>
    <Version>1.0.0</Version>
    <Authors>Author Name</Authors>
    <Company>Company Name</Company>
    <Product>Product Name</Product>
  </PropertyGroup>
</Project>

, Titleve PackageDescriptiongibi PackageTagsdiğer isteğe bağlı özellikleri ekleyebilirsiniz.

Uyarı

Genel kullanım için oluşturduğunuz paketlerde PackageTags özelliğine özellikle dikkat edin. Etiketler, başkalarının paketinizi bulmasına ve ne yaptığını anlamasına yardımcı olur.

Komut, proje dosyalarınızdaki PackageReference'leri otomatik olarak oluşturulan paketteki bağımlılıklara dönüştürür dotnet pack. IncludeAssets, ExcludeAssets ve PrivateAssets etiketleri aracılığıyla hangi varlıkların dahil edileceğini kontrol edebilirsiniz. Daha fazla bilgi için bkz. Bağımlılık varlıklarını denetleme.

Bağımlılıklar, isteğe bağlı özellikler ve sürüm oluşturma hakkında daha fazla bilgi için bkz:

Benzersiz bir paket tanımlayıcısı seçin ve sürüm numarasını ayarlayın

Paket tanımlayıcısı ve sürüm numarası, pakette yer alan tam kodu benzersiz olarak tanımlar.

Paket tanımlayıcısını oluşturmak için şu en iyi yöntemleri izleyin:

  • Tanımlayıcı, nuget.org ve paketi barındıran diğer tüm konumlarda benzersiz olmalıdır. Çakışmaları önlemek için iyi bir desen, tanımlayıcının ilk parçası olarak şirketinizin adını kullanmaktır.

  • Nokta gösterimini kullanarak .NET ad alanı benzeri bir adlandırma kuralını izleyin. Örneğin Contoso.Utility.UsefulStuff veya Contoso-Utility-UsefulStuff yerine Contoso_Utility_UsefulStuff kullanın. Paket tanımlayıcısını kodun kullandığı ad alanıyla eşleştirdiğinizde tüketiciler için de yararlı olur.

  • Başka bir paketin nasıl kullanılacağını gösteren bir örnek kod paketi oluşturursanız, içinde olduğu gibi .Sampletanımlayıcıya ekleyinContoso.Utility.UsefulStuff.Sample.

    Örnek paketin özgün pakete bağımlılığı vardır. Örnek paketi oluşturduğunuzda, <IncludeAssets> değerini contentFiles ile ekleyin. İçerik klasöründe, örnek kodu \Samples\identifier< adlı \Samples\>Contoso.Utility.UsefulStuff.Sample gibi bir klasörde düzenleyin.

Paket sürümünü ayarlamak için şu en iyi yöntemleri izleyin:

  • Genel olarak, paket sürümünü proje veya derleme sürümüyle eşleşecek şekilde ayarlayın, ancak bu kesinlikle gerekli değildir. Bir paketi tek bir derlemeyle sınırladığınızda sürümü eşleştirmek basittir. NuGet, derleme sürümleriyle değil bağımlılıkları çözerken paket sürümleriyle ilgilenir.

  • Standart olmayan bir sürüm düzeni kullanıyorsanız, Paket sürümü oluşturma bölümünde açıklandığı gibi NuGet sürüm oluşturma kurallarını dikkate aldığınızdan emin olun. NuGet çoğunlukla Semantik Sürüm Oluşturma 2.0.0 ile uyumludur.

Uyarı

Bağımlılık çözümlemesi hakkında daha fazla bilgi için bkz. PackageReference ile bağımlılık çözümleme. Sürüm oluşturma işlemini anlamanıza yardımcı olabilecek bilgiler için şu blog gönderileri dizisine bakın:

İsteğe bağlı açıklama alanı ekleme

Paketin isteğe bağlı açıklaması, paketin nuget.org sayfasının BENİOKU sekmesinde görünür. Açıklama, proje dosyasındaki <Description> veya $description dosyasındaki öğelerinden çekilir.

Aşağıdaki örnekte, bir .NET paketi için Description dosyasında bir örnek gösterilmektedir:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <PackageId>Azure.Storage.Blobs</PackageId>
    <Version>12.4.0</Version>
    <PackageTags>Microsoft Azure Storage Blobs;Microsoft;Azure;Blobs;Blob;Storage;StorageScalable</PackageTags>
    <Description>
      This client library enables working with the Microsoft Azure Storage Blob service for storing binary and text data.
      For this release see notes - https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/README.md and https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/CHANGELOG.md
      in addition to the breaking changes https://github.com/Azure/azure-sdk-for-net/blob/master/sdk/storage/Azure.Storage.Blobs/BreakingChanges.txt
      Microsoft Azure Storage quickstarts and tutorials - https://learn.microsoft.com/azure/storage/
      Microsoft Azure Storage REST API Reference - https://learn.microsoft.com/rest/api/storageservices/
      REST API Reference for Blob Service - https://learn.microsoft.com/rest/api/storageservices/blob-service-rest-api
    </Description>
  </PropertyGroup>
</Project>

Pack komutunu çalıştırma

NuGet paketini veya .nupkg dosyasını oluşturmak için proje klasöründen dotnet pack komutunu çalıştırın ve bu komut projeyi otomatik olarak oluşturur.

dotnet pack

Çıkışta .nupkg dosyasının yolu gösterilir:

MSBuild version 17.3.0+92e077650 for .NET
  Determining projects to restore...
  Restored D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj (in 97 ms).
  Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.

Derleme sırasında paketi otomatik olarak oluşturma

dotnet build komutunu her çalıştırdığınızda dotnet pack'ün otomatik olarak çalışması için, aşağıdaki satırı <PropertyGroup> etiketinin içine proje dosyanıza ekleyin:

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Uyarı

Paketi otomatik olarak oluşturduğunuzda paketleme, projenizin derleme süresini artırır.

Bir çözümde dotnet pack çalıştırıldığında, çözümdeki IsPackable özelliği true olarak ayarlanmış ve paketlenebilir olan tüm projeler paketlenir.

Paket yüklemesini test et

Paketi yayımlamadan önce paketi projeye yüklemeyi test etmelisiniz. Test, gerekli dosyaların projede doğru konumlarda olmasını sağlar.

Normal paket yükleme işlemini kullanarak Visual Studio'da veya komut satırında yüklemeyi el ile test edin.

Önemli

  • Paketler oluşturulduktan sonra değiştirilemez. Bir sorunu düzeltirseniz paket içeriğini değiştirin ve yeniden pakete ekleyin.

  • Paketi yeniden oluşturdıktan sonra yeniden test, genel paketler klasörünüzü temizleyene kadar paketin eski sürümünü kullanmaya devam eder. Klasörü temizlemek, her derlemede benzersiz bir ön sürüm etiketi kullanmayan paketler için özellikle önemlidir.

Sonraki Adımlar

Paketi oluşturduktan sonra .nupkg dosyasını istediğiniz konağa yayımlayabilirsiniz.

Paketinizin özelliklerini genişletmenin veya diğer senaryoları desteklemenin yolları için aşağıdaki makalelere bakın: