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.exe
komut 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ın
msbuild -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 pack
paketleyebilirsiniz. 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 komutunuAssemblyName
kullanır.Version
, formdaMajor.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 olur1.0.0
.Authors
paketin yazarlarıdır. Belirtilmezse, varsayılan değer olurAssemblyName
.Company
şirket bilgileridir. Belirtilmezse, varsayılan değer değerdirAuthors
.Product
ürün bilgileridir. Belirtilmezse, varsayılan değer olurAssemblyName
.
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>
, PackageDescription
ve PackageTags
gibi Title
diğ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 IncludeAssets
ExcludeAssets
PrivateAssets
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:
- Proje dosyalarında paket başvuruları
- Paket sürümü oluşturma
- NuGet meta veri özellikleri
- MSBuild paketi hedefleri
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_UsefulStuff
yerineContoso-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.Sample
tanı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://video2.skills-academy.com/azure/storage/
Microsoft Azure Storage REST API Reference - https://video2.skills-academy.com/rest/api/storageservices/
REST API Reference for Blob Service - https://video2.skills-academy.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:
- Paket sürümü oluşturma
- Birden çok hedef çerçeveyi destekleme
- Paket ekle simgesi
- Kaynak ve yapılandırma dosyalarının dönüşümleri
- Yerelleştirme
- Yayın öncesi sürümler
- Paket türünü ayarlama
- MSBuild props ve hedefleri
- COM birlikte çalışma derlemeleri ile paketler oluşturma
- Yerel paketler oluşturma
- Sembol paketleri oluşturma (.snupkg)