Hızlı Başlangıç: dotnet CLI ile paket oluşturma ve yayımlama
Bu hızlı başlangıçta, .NET sınıf kitaplığından hızlı bir şekilde NuGet paketi oluşturma ve .NET komut satırı arabirimini veya dotnet CLI kullanarak bunu nuget.org yayımlama adımları gösterilmektedir.
Önkoşullar
Dotnet komut satırı aracını sağlayan .NET SDK'sı. Visual Studio 2017'den başlayarak dotnet CLI, .NET veya .NET Core ile ilgili tüm iş yükleriyle otomatik olarak yüklenir.
nuget.org'da ücretsiz bir hesap. Yeni bir bireysel hesap ekleme başlığındaki yönergeleri izleyin.
Sınıf kitaplığı projesi oluşturma
Paketlemek istediğiniz kod için mevcut bir .NET Sınıf Kitaplığı projesini kullanabilir veya aşağıdaki gibi basit bir proje oluşturabilirsiniz:
- AppLogger adlı bir klasör oluşturun.
- Bir komut istemi açın ve AppLogger klasörüne geçin. Bu hızlı başlangıçtaki tüm dotnet CLI komutları varsayılan olarak geçerli klasörde çalıştırılır.
- Geçerli klasör adıyla bir proje oluşturan değerini girin
dotnet new classlib
.
Daha fazla bilgi için bkz . dotnet new.
Proje dosyasına paket meta verileri ekleme
Her NuGet paketi, paketin içeriğini ve bağımlılıklarını açıklayan bir bildirime sahiptir. Son pakette bildirim, proje dosyasına eklediğiniz NuGet meta veri özelliklerini kullanan bir .nuspec dosyasıdır.
.csproj, .fsproj veya .vbproj proje dosyasını açın ve mevcut <PropertyGroup>
etiketin içine aşağıdaki özellikleri ekleyin. Ad ve şirket için kendi değerlerinizi kullanın ve paket tanımlayıcısını benzersiz bir değerle değiştirin.
<PackageId>Contoso.08.28.22.001.Test</PackageId>
<Version>1.0.0</Version>
<Authors>your_name</Authors>
<Company>your_company</Company>
Önemli
Paket tanımlayıcısı nuget.org ve diğer paket kaynakları arasında benzersiz olmalıdır. Yayımlama paketi genel olarak görünür hale getirir, bu nedenle örnek AppLogger kitaplığını veya başka bir test kitaplığını kullanıyorsanız veya Test
içeren Sample
benzersiz bir ad kullanın.
NuGet meta veri özelliklerinde açıklanan 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.
Pack komutunu çalıştırma
Projeden bir NuGet paketi veya .nupkg dosyası oluşturmak için, projeyi otomatik olarak da oluşturan dotnet pack komutunu çalıştırın.
dotnet pack
Çıkışta .nupkg dosyasının yolu gösterilir:
MSBuild version 17.3.0+92e077650 for .NET
Determining projects to restore...
Restored C:\Users\myname\source\repos\AppLogger\AppLogger.csproj (in 64 ms).
AppLogger -> C:\Users\myname\source\repos\AppLogger\bin\Debug\net6.0\AppLogger.dll
Successfully created package 'C:\Users\myname\source\repos\AppLogger\bin\Debug\Contoso.08.28.22.001.Test.1.0.0.nupkg'.
Derlemede paketi otomatik olarak oluşturma
komutunu her çalıştırdığınızda dotnet build
otomatik olarak çalıştırmak dotnet pack
için içindeki proje dosyanıza <PropertyGroup>
aşağıdaki satırı ekleyin:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
Paketi yayımlama
.nupkg dosyanızı, nuget.org alınan bir API anahtarıyla dotnet nuget push komutunu kullanarak nuget.org yayımlayın.
Not
Nuget.org karşıya yüklenen tüm paketleri virüslere karşı tarar ve virüs bulursa paketleri reddeder. Nuget.org ayrıca mevcut tüm listelenen paketleri düzenli aralıklarla tarar.
nuget.org yayımladığınız paketler, listelerini kaldırmadığınız sürece diğer geliştiriciler tarafından genel olarak görülebilir. Paketleri özel olarak barındırmak için bkz . Kendi NuGet akışlarınızı barındırma.
API anahtarınızı alma
nuget.org hesabınızda oturum açın veya henüz hesabınız yoksa bir hesap oluşturun.
Sağ üst köşeden kullanıcı adınızı ve ardından API Anahtarları'nı seçin.
Oluştur'u seçin ve anahtarınız için bir ad belirtin.
Kapsamları Seç'in altında Gönder'i seçin.
Paketleri>Seç Glob Deseni'nin altına * girin.
Oluştur'u belirleyin.
Yeni anahtarı kopyalamak için Kopyala'yı seçin.
Önemli
- API anahtarınızı her zaman gizli tutun. API anahtarı, herkesin sizin adınıza paketleri yönetmesine olanak tanıyan bir parola gibidir. YANLıŞLıKLA ortaya çıkarsa API anahtarınızı silin veya yeniden oluşturun.
- Anahtarı daha sonra yeniden kopyalayamadığınızdan anahtarınızı güvenli bir konuma kaydedin. API anahtarı sayfasına dönerseniz, anahtarı kopyalamak için yeniden oluşturmanız gerekir. Paketleri artık göndermek istemiyorsanız API anahtarını da kaldırabilirsiniz.
Kapsam belirleme, farklı amaçlar için ayrı API anahtarları oluşturmanıza olanak tanır. Her anahtarın bir süre sonu zaman çerçevesi vardır ve anahtarın kapsamını belirli paketlere veya glob desenlerine göre ayarlayabilirsiniz. Ayrıca her anahtarın kapsamını belirli işlemlerin kapsamına alırsınız: Yeni paketler ve paket sürümleri gönderme, yalnızca yeni paket sürümleri gönderme veya listeden kaldırma.
Kapsam belirleme yoluyla, kuruluşunuz için paketleri yöneten farklı kişiler için API anahtarları oluşturabilir ve böylece yalnızca ihtiyaç duydukları izinlere sahip olursunuz.
Daha fazla bilgi için bkz . kapsamlı API anahtarları.
dotnet nuget push ile yayımlama
.nupkg dosyasını içeren klasörden aşağıdaki komutu çalıştırın. .nupkg dosya adınızı belirtin ve anahtar değerini API anahtarınızla değiştirin.
dotnet nuget push Contoso.08.28.22.001.Test.1.0.0.nupkg --api-key qz2jga8pl3dvn2akksyquwcs9ygggg4exypy3bhxy6w6x6 --source https://api.nuget.org/v3/index.json
Çıktı, yayımlama işleminin sonuçlarını gösterir:
Pushing Contoso.08.28.22.001.Test.1.0.0.nupkg to 'https://www.nuget.org/api/v2/package'...
PUT https://www.nuget.org/api/v2/package/
warn : All published packages should have license information specified. Learn more: https://aka.ms/nuget/authoring-best-practices#licensing.
Created https://www.nuget.org/api/v2/package/ 1221ms
Your package was pushed.
Daha fazla bilgi için bkz . dotnet nuget push.
Not
Test paketinizin nuget.org canlı olmasını önlemek istiyorsanız adresinden nuget.org test sitesine https://int.nugettest.orggönderebilirsiniz. int.nugettest.org yüklenen paketlerin korunmayabileceğini unutmayın.
Yayımlama hataları
Komuttan gelen push
hatalar genellikle sorunu gösterir. Örneğin, projenizdeki sürüm numarasını güncelleştirmeyi unutmuş olabilirsiniz, bu nedenle zaten var olan bir paketi yayımlamaya çalışıyorsunuz.
API anahtarınız geçersizse veya süresi dolmuşsa ya da konakta zaten var olan bir tanımlayıcıyı kullanarak bir paket yayımlamaya çalıştığınızda da hatalar görürsünüz. Örneğin, tanımlayıcının AppLogger-test
nuget.org zaten var olduğunu varsayalım. Bu tanımlayıcıya sahip bir paket yayımlamaya çalışırsanız, push
komut aşağıdaki hatayı verir:
Response status code does not indicate success: 403 (The specified API key is invalid,
has expired, or does not have permission to access the specified package.).
Bu hatayı alırsanız süresi dolmamış geçerli bir API anahtarı kullanıp kullanmadığınızı denetleyin. Bu durumda hata, konakta paket tanımlayıcısının zaten var olduğunu gösterir. Hatayı düzeltmek için paket tanımlayıcısını benzersiz olacak şekilde değiştirin, projeyi yeniden derleyin, .nupkg dosyasını yeniden oluşturun ve komutu yeniden deneyinpush
.
Yayımlanan paketi yönetme
Paketiniz başarıyla yayımlandığında bir onay e-postası alırsınız. Yeni yayımladığınız paketi görmek için, nuget.org sağ üst köşeden kullanıcı adınızı ve ardından Paketleri Yönet'i seçin.
Not
Paketinizin dizine alınması ve başkalarının bulabileceği arama sonuçlarında görünmesi biraz zaman alabilir. Bu süre boyunca paketiniz Listelenmemiş Paketler altında görünür ve paket sayfası aşağıdaki iletiyi gösterir:
Şimdi diğer geliştiricilerin projelerinde kullanabileceği nuget.org için bir NuGet paketi yayımladınız.
Kullanışlı olmayan bir paket oluşturduysanız (örneğin, boş bir sınıf kitaplığıyla oluşturulmuş bu örnek paket) veya paketin görünür olmasını istemediğinize karar verirseniz, paketi arama sonuçlarından gizlemek için paketin listesini kaldırabilirsiniz:
Paket, Paketleri Yönet sayfasındaki Yayımlanan Paketler'in altında göründükten sonra paket listesinin yanındaki kalem simgesini seçin.
Sonraki sayfada Listele'yi seçin, Arama sonuçlarında listele onay kutusunun seçimini kaldırın ve ardından Kaydet'i seçin.
Paket artık Paketleri Yönet'teki Listelenmemiş Paketler altında görünür ve artık arama sonuçlarında görünmez.
Not
Test paketinizin nuget.org canlı olmasını önlemek için konumundaki nuget.org test sitesine https://int.nugettest.orggönderebilirsiniz. int.nugettest.org yüklenen paketlerin korunmayabileceğini unutmayın.
tebrikler ilk NuGet paketinizi oluşturup yayımladınız!
İlgili video
Channel 9 ve YouTube'da daha fazla NuGet videosu bulun.
Sonraki adımlar
Dotnet CLI ile paket oluşturma hakkında daha fazla ayrıntıya bakın:
NuGet paketlerini oluşturma ve yayımlama hakkında daha fazla bilgi edinin: