Share via


dotnet CLI ile NuGet paketi oluşturma

NuGet paketleri, geliştiricilerin projelerinde yeniden kullanabileceği kodu içerir. Kodunuzun ne yaptığı veya içerdiği fark etmez, NuGet paketini oluşturmak için veya dotnet.exekomut satırı aracını nuget.exe 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.

Not

  • GENELLIKLE .NET Framework projeleri olmak üzere SDK stili olmayan projelere yönelik paketler oluşturmak ve yayımlamak için bkz . nuget.exe CLI kullanarak paket oluşturma veya Visual Studio (.NET Framework) kullanarak paket oluşturma ve yayımlama.

  • packages.config dosyasından PackageReference'a geçirilen projeler için kullanınmsbuild -t:pack. Daha fazla bilgi için bkz . Geçiş sonrasında paket oluşturma.

Ö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, komutu komutunu AssemblyNamekullanı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'da 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>

, PackageDescriptionve PackageTagsgibi Titlediğer isteğe bağlı özellikleri ekleyebilirsiniz.

Not

Genel tüketim için oluşturduğunuz paketler için tesise PackageTags özellikle dikkat edin. Etiketler, başkalarının paketinizi bulmasına ve ne yaptığını anlamasına yardımcı olur.

Komutu, dotnet pack proje dosyalarınızdaki dosyaları otomatik olarak oluşturulan paketteki bağımlılıklara dönüştürür PackageReference. ve etiketleri aracılığıyla IncludeAssetsExcludeAssetsPrivateAssets dahil etmek istediğiniz varlıkları denetleyebilirsiniz. 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 konumlar arasında 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, veya Contoso_Utility_UsefulStuffyerine Contoso-Utility-UsefulStuff kullanınContoso.Utility.UsefulStuff. 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 Contoso.Utility.UsefulStuff.Sampletanımlayıcıya ekleyin.Sample.

    Örnek paketin özgün pakete bağımlılığı vardır. Örnek paketi oluşturduğunuzda değeriyle ekleyin <IncludeAssets>contentFiles . İç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.

Not

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 dosyasından veya $description .nuspec dosyasındaki dosyasından çeker<Description>.

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

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

Derlemede paketi otomatik olarak oluşturma

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

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

Not

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

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

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: