Aracılığıyla paylaş


NuGet paketlerini yayımlama

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çıklanı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 Paketleri NuGet.org'a yayımlama bölümüne bakın.

Nuget.org'a yayımla

nuget.org üzerinde yayımlamak için, Microsoft hesabıyla nuget.org'da oturum açın ve bu hesabı kullanarak ücretsiz bir nuget.org hesabı oluşturun. Yeni bir bireysel hesap ekleme başlığındaki yönergeleri izleyin.

NuGet oturum açma bağlantısını gösteren ekran görüntüsü.

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. Bilgisayarınızdaki paketi nuget.org'daki üst menüden Karşıya Yükle seçeneğini seçerek bulun ve düğmesine tıklayın.

    nuget.org'da Yükleme iletişim kutusunu gösteren ekran görüntüsü

    Nuget.org'da zaten bir paket kimliği varsa, bir hata mesajı 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 itme

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. Paket Seçimi Glob Deseni altında * karakterini girin.

  6. Oluştur'i seçin.

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

    Kopyala bağlantısını içeren yeni API anahtarını gösteren ekran görüntüsü.

Ö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. sınırlı 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.

Uyarı

Test paketinizin nuget.org’da canlı olmasını önlemek istiyorsanız, https://int.nugettest.org adresinden nuget.org test sitesine gönderebilirsiniz. Ancak, int.nugettest.org’a yüklenen paketlerin korunmayabileceğini göz önünde bulundurun.

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.

    Uyarı

    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 yeniden 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:

Paketin henüz yayımlanmadığını belirten iletinin ekran görüntüsü.

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 sahiplik atar; bu kişi, ya paketi karşıya yükleyen oturum açmış kullanıcı ya da API anahtarı dotnet push, nuget SetApiKey veya nuget push ile kullanılan kullanıcıdır.

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.

    • Sahip ekle'nin altına bir sahip eklemek için kullanıcı adını ve bir ileti girin, ardından Ekle'yi seçin.

      Bu eylem, yeni ortak sahipe bir onay bağlantısı içeren bir e-posta gönderir. Onaylandığında, bu kişi sahip ekleme ve kaldırma konusunda tam yetkiye sahiptir. Onaylanana kadar Mevcut 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.

Sahipliği bir şirkete veya gruba atamak için, uygun ekip üyelerine yönlendirilen bir e-posta takma 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