dotnet clı kullanarak NuGet paketi oluşturma
Paketinizin ne yaptığını veya hangi kodu içerdiğini bağımsız olarak, nuget.exe Bu işlevselliği bir veya daha fazla dotnet.exe Geliştirici tarafından kullanılabilen bir bileşene paketlemek için ya da CLI araçlarından birini kullanırsınız. Bu makalede, DotNet CLı kullanarak bir paketin nasıl oluşturulacağı açıklanır. dotnetclı 'yı yüklemek için bkz. dotnet. Visual Studio 2017 ' den başlayarak, dotnet clı .net Core iş yüklerine dahildir.
.net Core ve sdk stili biçimikullanan .NET Standard projeleri ve diğer sdk stili projeleri için, NuGet doğrudan bir paket oluşturmak için proje dosyasındaki bilgileri kullanır. Adım adım öğreticiler için bkz. DotNet CLI ile .NET Standard paketleri oluşturma veya Visual Studio Ile .NET Standard paketleri oluşturma.
msbuild -t:pack işlevine eşdeğerdir dotnet pack . MSBuild ile derlemek için bkz. MSBuild kullanarak NuGet paketi oluşturma.
Önemli
Bu konu, genellikle .NET Core ve .NET Standard projeleri SDK stilindeki projeler için geçerlidir.
Özellikleri ayarlama
Bir paket oluşturmak için aşağıdaki özellikler gereklidir.
PackageId, paketi barındıran Galeri genelinde benzersiz olması gereken paket tanımlayıcısı. Belirtilmemişse, varsayılan değerAssemblyName.Version,Versionbiçiminde belirli bir sürüm numarası; burada -suffixyayın öncesi sürümlerinitanımlar. Belirtilmemişse, varsayılan değer 1.0.0 ' dir.- Paket başlığı konakta görüntülenecek şekilde (nuget.org gibi)
Authors, yazar ve sahip bilgileri. Belirtilmemişse, varsayılan değerAssemblyName.Company, şirketinizin adı. Belirtilmemişse, varsayılan değerAssemblyName.
Visual Studio, bu değerleri proje özelliklerinde ayarlayabilirsiniz (Çözüm Gezgini projede projeye sağ tıklayıp özellikler' i seçin ve paket sekmesini seçin). Bu özellikleri doğrudan proje dosyaları () içinde de ayarlayabilirsiniz .csproj .
<PropertyGroup>
<PackageId>AppLogger</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
</PropertyGroup>
Önemli
Pakete nuget.org genelinde benzersiz bir tanımlayıcı verin veya kullandığınız herhangi bir paket kaynağını kullanın.
Aşağıdaki örnekte, bu özelliklerle birlikte basit ve tamamlanmış bir proje dosyası gösterilmektedir. (Komutunu kullanarak yeni bir varsayılan proje oluşturabilirsiniz dotnet new classlib .)
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<PackageId>AppLogger</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
</PropertyGroup>
</Project>
ayrıca,, ve gibi isteğe bağlı özellikleri, TitlePackageDescriptionPackageTagsTitle' nde açıklandığı gibi, PackageDescriptionve PackageTagsda ayarlayabilirsiniz.
Not
Genel tüketim için derlenmiş paketler için, paket etiketleri özelliğine özel bir dikkat edin, Etiketler başkalarının paketinizi bulmasına ve ne yaptığını anlamalarına yardımcı olur.
Bağımlılıkları bildirme ve sürüm numaralarını belirtme hakkında ayrıntılar için bkz. proje dosyaları ve paket sürümü oluşturmaiçindeki paket başvuruları . Ayrıca, ve özniteliklerini kullanarak doğrudan pakette bulunan bağımlılıklardan gelen bir varlık için de mümkündür <IncludeAssets><ExcludeAssets> . Daha fazla bilgi için bkz. bağımlılık varlıklarını denetleme.
İsteğe bağlı açıklama alanı ekleme
paketin NuGet. org sayfasında yer alan isteğe bağlı açıklama, <description></description>.csproj dosyada kullanılan veya $description<description></description>' de kullanılarak çekilir.
Bir .net paketi IÇIN dosyanın aşağıdaki XML metninde bir açıklama alanı örneği 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://docs.microsoft.com/en-us/azure/storage/
Microsoft Azure Storage REST API Reference - https://docs.microsoft.com/en-us/rest/api/storageservices/
REST API Reference for Blob Service - https://docs.microsoft.com/en-us/rest/api/storageservices/blob-service-rest-api
</Description>
</PropertyGroup>
</Project>
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 bulunan tam kodu benzersiz bir şekilde tanımladıklarından, projedeki en önemli iki değer vardır.
Paket tanımlayıcısı için en iyi uygulamalar:
- Benzersizlik: tanımlayıcı, NuGet.org genelinde benzersiz olmalıdır veya paketi barındıran Galeri. Bir tanımlayıcıya karar vermeden önce, adın zaten kullanımda olup olmadığını denetlemek için ilgili galeride arama yapın. Çakışmaları önlemek için iyi bir model, tanımlayıcı ilk parçası olarak şirketinizin adını kullanmaktır
Contoso.. - Ad alanı benzeri adlar: kısa çizgi yerine nokta gösterimini kullanarak .net 'teki ad alanlarına benzer bir model izleyin. Örneğin,
Contoso.Utility.UsefulStuffveya yerine kullanınContoso-Utility-UsefulStuffContoso_Utility_UsefulStuff. Tüketiciler ayrıca, paket tanımlayıcısı kodda kullanılan ad alanları ile eşleştiğinde yararlı olduğunu bulur. - Örnek paketler: başka bir paketin nasıl kullanılacağını gösteren bir örnek kod paketi oluşturursanız, ' de olduğu gibi, tanımlayıcıda bir sonek olarak iliştirme
Contoso.Utility.UsefulStuff.Sample. (Örnek paketin, diğer pakete bağımlılığı vardır.) Örnek bir paket oluştururken,contentFilesiçindeki değerini kullanın<IncludeAssets>.contentKlasöründe, örnek kodu içinde olarak adlandırılan bir klasörde düzenleyin\Samples\<identifier>\Samples\Contoso.Utility.UsefulStuff.Sample.
Paket sürümü için en iyi uygulamalar:
- Genel olarak, paketin sürümünü proje (veya bütünleştirilmiş kod) ile eşleşecek şekilde ayarlayın, ancak bu kesinlikle gerekli değildir. Bu, bir paketi tek bir derlemeyle sınırlandırdığınızda basit bir işlemdir. genel olarak, derleme sürümlerini değil, bağımlılıklar çözümlenirken NuGet kendisinin paket sürümleriyle uğraşır olduğunu unutmayın.
- standart olmayan bir sürüm düzeni kullanırken, paket sürümü oluşturmabölümünde açıklandığı gibi NuGet sürüm oluşturma kurallarını dikkate aldığınızdan emin olun. NuGet çoğunlukla semver 2 uyumludur.
Bağımlılık çözümleme hakkında daha fazla bilgi için bkz. PackageReference Ile bağımlılık çözünürlüğü. Sürüm oluşturmayı daha iyi anlamak için de yararlı olabilecek eski bilgiler için, bu blog gönderilerine bakın.
Pack komutunu çalıştırın
projeden bir NuGet paketi (bir .nupkg dosya) oluşturmak için dotnet pack komutunu çalıştırın, bu da projeyi otomatik olarak oluşturur:
# Uses the project file in the current folder by default
dotnet pack
Çıktı, dosyanın yolunu gösterir .nupkg .
Microsoft (R) Build Engine version 15.5.180.51428 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 29.91 ms for D:\proj\AppLoggerNet\AppLogger\AppLogger.csproj.
AppLogger -> D:\proj\AppLoggerNet\AppLogger\bin\Debug\netstandard2.0\AppLogger.dll
Successfully created package 'D:\proj\AppLoggerNet\AppLogger\bin\Debug\AppLogger.1.0.0.nupkg'.
Derleme üzerinde otomatik olarak paket oluştur
Çalıştırdığınızda otomatik olarak çalıştırmak için dotnet packdotnet build , aşağıdaki satırı içindeki proje dosyanıza ekleyin <PropertyGroup> :
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
dotnet packBir çözümde çalıştırdığınızda bu, çözümdeki ( özelliği olarak ayarlanır) Çözümdeki tüm projeleri paketler true .
Not
Paketi otomatik olarak oluşturduğunuzda, paketlenecek süre projenizin derleme süresini arttırır.
Test paketi yüklemesi
Bir paketi yayımlamadan önce, genellikle bir projeye paket yükleme işlemini test etmek istersiniz. Testler, gerekli dosyaların projenin doğru konumlarında bulunduğundan emin olmanızı ister.
yüklemeleri, Visual Studio veya normal paket yükleme adımlarınıkullanarak komut satırında el ile test edebilirsiniz.
Önemli
Paketler sabittir. Bir sorunu düzeltseniz, yeniden test ettiğinizde, siz de genel paketler klasörünüzü kaldırana kadar paketin eski sürümünü kullanmaya devam edersiniz. Bu, özellikle her derlemede benzersiz bir ön sürüm etiketi kullanmayan paketleri test ederken ilgilidir.
Sonraki Adımlar
Bir dosya olan bir paket oluşturduktan sonra .nupkg , bir .nupkgkonusunda açıklandığı gibi istediğiniz Galeri ile yayımlayabilirsiniz.
Ayrıca, aşağıdaki konularda açıklandığı gibi, paketinizin yeteneklerini genişletmek veya diğer senaryoları desteklemek isteyebilirsiniz:
- Paket sürümü oluşturma
- Birden çok hedef çerçeveyi destekleme
- Paket simgesi ekleme
- Kaynak ve yapılandırma dosyalarının dönüştürmeleri
- Yerelleştirme
- Yayın öncesi sürümler
- Paket türünü ayarlama
- COM birlikte çalışma Derlemeleriyle paket oluşturma
Son olarak, bilmeniz için ek paket türleri vardır: