NuGet paketlerini yönetme

Bir NuGet paketi oluşturduktan ve . nupkg dosyasına sahip olduktan sonra paketi genel veya özel olarak diğer geliştiricilerin kullanımına sunabilirsiniz. Bu makalede, nuget.org aracılığıyla genel paketlerin genel olarak nasıl paylaşıldığı açıklanmaktadır.

Ayrıca özel paketleri bir dosya paylaşımında, özel NuGet sunucusunda veya myget, ProGet, Nexus Deposu veya Artifactory gibi üçüncü taraf depolarda barındırarak yalnızca bir ekip veya kuruluşun kullanımına sunabilirsiniz. Daha fazla bilgi için bkz . Kendi NuGet akışlarınızı barındırma. Azure Artifacts ile yayımlamak için bkz. Paketleri NuGet.org yayımlama.

nuget.org yayımlama

nuget.org yayımlamak için microsoft hesabıyla nuget.org oturum açın ve ücretsiz bir nuget.org hesabı oluşturmak için bu hesabı kullanın. Yeni bir bireysel hesap ekleme başlığındaki yönergeleri izleyin.

Screenshot that shows the NuGet sign in link.

Hesabınız olduktan sonra, nuget.org web portalı, dotnet CLI veya NuGet CLI sürüm 4.1.0 veya üzerini kullanarak paketi nuget.org yayımlayabilirsiniz. Paketleri Azure Pipelines aracılığıyla da yayımlayabilirsiniz.

nuget.org web portalına yükleme

Paketi nuget.org web sitesine yüklemek için:

  1. nuget.org üstteki menüden Karşıya Yükle'yi seçin, bilgisayarınızdaki pakete göz atın ve Aç'ı seçin.

    Screenshot that shows the Upload dialog on nuget.org

    Paket kimliği nuget.org zaten varsa bir hata alırsınız. Projenizdeki paket tanımlayıcısını değiştirin, yeniden paketleyin ve karşıya yüklemeyi yeniden deneyin.

  2. Paket adı kullanılabiliyorsa, paket bildiriminden meta verileri gözden geçirebilmeniz için Doğrula bölümü açılır. Paketinize bir benioku dosyası eklediyseniz, tüm içeriğin düzgün işlendiğinden emin olmak için Önizleme'yi seçin.

    Meta verilerden herhangi birini değiştirmek için proje dosyanızı veya .nuspec dosyanızı düzenleyin, yeniden derleyin, yeniden paketleyin ve yeniden yükleyin.

  3. Tüm bilgiler hazır olduğunda Gönder'i seçin.

Komut satırı kullanarak gönderme

Paketleri komut satırıyla nuget.org göndermek için, gerekli NuGet protokollerini uygulayan v4.1.0 veya üzerini kullanabilirsiniz dotnet.exenuget.exe . Daha fazla bilgi için bkz . NuGet protokolleri.

Komut satırlarından birini kullanmak için önce nuget.org'dan bir API anahtarı almanız gerekir.

API Anahtarı oluşturma

  1. nuget.org hesabınızda oturum açın veya henüz hesabınız yoksa bir hesap oluşturun.

  2. Sağ üst köşeden kullanıcı adınızı ve ardından API Anahtarları'nı seçin.

  3. Oluştur'u seçin ve anahtarınız için bir ad belirtin.

  4. Kapsamları Seç'in altında Gönder'i seçin.

  5. Paketleri>Seç Glob Deseni'nin altına * girin.

  6. Oluştur'u belirleyin.

  7. Yeni anahtarı kopyalamak için Kopyala'yı seçin.

    Screenshot that shows the new API key with the Copy link.

Ö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 CLI kullanma

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

NuGet CLI kullanma

  1. Komut isteminde aşağıdaki komutu çalıştırın ve yerine <your_API_key> nuget.org'dan aldığın anahtarı yazın:

    nuget setApiKey <your_API_key>
    

    Bu komut API anahtarınızı NuGet yapılandırmanızda depolar, böylece API anahtarını aynı bilgisayara yeniden girmeniz gerekmez.

    Not

    Bu API anahtarı, özel akışlarla kimlik doğrulaması yapmak için kullanılmaz. Bu kaynaklarla kimlik doğrulaması için kimlik bilgilerini yönetmek için nuget sources komutuna bakın.

  2. Aşağıdaki komutu kullanarak paketi gönderin:

    nuget push YourPackage.nupkg -Source https://api.nuget.org/v3/index.json
    

Azure Pipelines ile yayımlama

Sürekli tümleştirme/sürekli dağıtım (CI/CD) işleminizin bir parçası olarak Azure Pipelines ile paketleri nuget.org gönderebilirsiniz. Daha fazla bilgi için bkz . Azure Pipelines ile NuGet paketlerini yayımlama.

İmzalı paket yayımlama

İmzalı bir paket göndermek için önce paketi imzalamak için kullandığınız sertifikayı kaydetmeniz gerekir. İmzalı paket gereksinimlerini karşılamıyorsanız nuget.org paketi reddeder.

Paket boyutu sınırları

Nuget.org yaklaşık 250 MB paket boyutu sınırına sahiptir. Bu sınırı aşan bir paket karşıya yüklendiğinde aşağıdaki hata görüntülenir:

Paket dosyası boyut sınırını aşıyor. Lütfen tekrar deneyin.

Bu tür bir paket komut satırından gönderiliyorsa aşağıdaki çıkış oluşturulur:

  RequestEntityTooLarge https://www.nuget.org/api/v2/package/ 13903ms
error: Response status code does not indicate success: 413 (The package file exceeds the size limit. Please try again.).

Bu hataları alıyorsanız, paket içeriğini boyutunu küçültmek için gözden geçirmeyi göz önünde bulundurun. Hata ayıklama simgelerini paketinize paketlediyseniz bunları ayrı olarak yayımlamayı göz önünde bulundurun. Diğer varlıklar, bunları daha küçük parçalara yaymak için bir veya daha fazla bağımlılık paketi olarak ayrı olarak yayımlanabilir.

Paket doğrulama ve dizin oluşturma

nuget.org gönderilen paketler virüs denetimleri gibi çeşitli doğrulamalardan geçer ve mevcut paketler düzenli aralıklarla taranır. Paket tüm doğrulama denetimlerini geçtiğinde dizine alınması ve arama sonuçlarında görünmesi biraz zaman alabilir. Paket dizine alınırken Listelenmemiş Paketler altında görünür ve paket sayfasında aşağıdaki iletiyi görürsünüz:

Screenshot of a message indicating that a package isn't yet published.

Doğrulama ve dizin oluşturma tamamlandıktan sonra, paketin başarıyla yayımlandığını belirten bir e-posta alırsınız. Paket doğrulama denetiminde başarısız olursa, paket sayfası ilişkili hatayı görüntüleyecek şekilde güncelleştirilir ve bir bildirim e-postası alırsınız.

Paket doğrulama ve dizin oluşturma işlemleri genellikle 15 dakikadan kısa sürer. Paket yayımlama işlemi beklenenden uzun sürüyorsa status.nuget.org nuget.org durumunu denetleyin. Tüm sistemler çalışır durumdaysa ve paket bir saat içinde başarıyla yayımlanmazsa, paket sayfasındaki Desteğe başvurun bağlantısını kullanarak nuget.org başvurun.

Paket durumunu görmek için, nuget.org sağ üst kısmında hesap adınızın altında Paketleri yönet'i seçin ve yayımlanan paketler veya Listelenmemiş Paketler'den paketi seçin.

nuget.org'de paket sahiplerini yönetme

Paket sahipleri, diğer sahipleri ekleme ve kaldırma ve güncelleştirmeleri yayımlama dahil olmak üzere paket için tam izinlere sahiptir.

NuGet paketinin .nuspec dosyası paketin yazarlarını tanımlasa da nuget.org sahipliği tanımlamak için bu meta verileri kullanmaz. Bunun yerine, nuget.org paketi yayımlayan kişiye, paketi karşıya yükleyen oturum açmış kullanıcıya veya API anahtarı , nuget SetApiKeyveya nuget pushile dotnet pushkullanılan kullanıcıya sahiplik atar.

Paketin sahipliğini değiştirmek için:

  1. Şu anda paketin sahibi olan hesapla nuget.org oturum açın.

  2. Sağ üst köşeden hesap adınızı seçin, Paketleri yönet'i seçin ve Yayımlanan Paketler'i genişletin.

  3. Yönetmek istediğiniz paketi seçin ve paket sayfasının sağ tarafında Paketi yönet'i seçin.

  4. Paket yönetimi sayfasında Sahipler'i seçin.

  5. Aşağıdaki eylemlerden birini uygulayın:

    • Geçerli sahibi kaldırmak için Kaldır'ı seçin.

    • Kullanıcı adını ve iletiyi girip Ekle'yi seçerek Sahip ekle'nin altına bir sahip ekleyin.

      Bu eylem, yeni ortak sahipe bir onay bağlantısı içeren bir e-posta gönderir. Onaylandığında, bu kişinin sahip ekleme ve kaldırmaya yönelik tam izinleri vardır. Onaylanana kadar Geçerli sahipler bölümünde bu kişi için bekleyen onay gösterilir.

Sahiplik değiştiğinde veya paket yanlış hesapta yayımlandığında olduğu gibi sahipliği aktarmak için yeni sahibi ekleyin. Sahipliği onayladıktan sonra eski sahibi listeden kaldırabilirler.

Şirkete veya gruba sahiplik atamak için, uygun ekip üyelerine iletilen bir e-posta diğer adıyla bir nuget.org hesabı oluşturun. Örneğin, çeşitli Microsoft ASP.NET paketleri microsoft ve aspnet hesaplarına aittir.

Bazen bir paketin etkin sahibi olmayabilir. Örneğin, özgün sahip paketi üreten şirketten ayrılmış olabilir. Bir paketin gerçek sahibiyseniz ve sahipliğini yeniden kazanmanız gerekiyorsa, durumunuzu NuGet ekibine açıklamak için nuget.org'da iletişim formunu kullanın. Ekip, mevcut sahibi bulmaya çalışmak da dahil olmak üzere sahipliğini doğrulamak için bir süreç izler ve paket sahibi olmak için size yeni bir davet gönderebilir.

Sonraki adımlar