Hızlı Başlangıç: Visual Studio kullanarak paket oluşturma ve yayımlama (.NET Framework, Windows)

Microsoft Visual Studio ile .NET Framework sınıf kitaplığından bir NuGet paketi oluşturabilir ve ardından NuGet CLI aracını kullanarak bu paketi nuget.org yayımlayabilirsiniz.

Hızlı başlangıç yalnızca Windows kullanıcılar içindir. Mac için Visual Studio kullanıyorsanız bunun yerine bkz. dotnet CLI araçları.

Prerequisites

  • Windows için herhangi bir .NET ile ilgili iş yüküyle beraber Visual Studio 2022'yi yükleyin.

    2022 Community sürümünü visualstudio.microsoft.com ücretsiz yükleyebilir veya Professional veya Enterprise sürümünü kullanabilirsiniz.

    Visual Studio 2017 ve üzeri bir .NET iş yükü yüklendiğinde NuGet özelliklerini otomatik olarak içerir.

  • Henüz bir hesabınız yoksa nuget.org'da ücretsiz bir hesaba kaydolun. NuGet paketini karşıya yükleyebilmeniz için önce hesabı kaydetmeniz ve onaylamanız gerekir.

  • NuGet CLI'yi nuget.org'dan indirerek yükleyin. nuget.exe dosyasını uygun bir klasöre ekleyin ve bu klasörü PATH ortam değişkeninize ekleyin.

Sınıf kitaplığı projesi oluşturma

Sınıf kitaplığı projesi oluşturmak için şu adımları izleyin:

  1. Visual Studio'da Dosya>Yeni Proje'yi> seçin.

  2. Yeni proje oluştur penceresinde, açılan listelerde C#, Windows ve Library seçin.

  3. Sonuçta elde edilen proje şablonları listesinde Class Library (.NET Framework) öğesini ve ardından Ext öğesini seçin.

  4. Yeni project yapılandırın penceresinde, Project adı için AppLogger girin ve Create öğesini seçin.

  5. Projenin düzgün oluşturulduğundan emin olmak içinDerleme Çözümü> tıklayın. DLL, Debug klasöründe bulunur (veya bunun yerine bu yapılandırmayı oluşturursanız Release).

  6. (İsteğe bağlı) Bu hızlı başlangıçta, şablon sınıfı kitaplığı paket oluşturmak için yeterli olduğundan NuGet paketi için ek kod yazmanız gerekmez. Ancak, bu örnek paket için bazı işlevsel kodlar istiyorsanız aşağıdaki kodu ekleyin:

    namespace AppLogger
    {
        public class Logger
        {
            public void Log(string text)
            {
                Console.WriteLine(text);
            }
        }
    }
    

    Gerçek bir NuGet paketinde, büyük olasılıkla başkalarının uygulama oluşturabileceği birçok kullanışlı özellik uygulamanız gerekir. Hedef çerçeveleri de ayarlayabilirsiniz. Bir örnek için bkz. UWP.

Paket için proje özelliklerini yapılandırma

NuGet paketi, paket tanımlayıcısı, sürüm numarası, açıklama ve daha fazlası gibi ilgili meta verileri içeren bir .nuspec bildirim (dosya) içerir. Bu meta verilerden bazıları doğrudan proje özelliklerinden alınabilir ve bu da bunları hem projede hem de bildirimde ayrı olarak güncellemeyi gerektirmez. Aşağıdaki adımlarda, geçerli özelliklerin nasıl ayarlanacağı açıklanmaktadır:

  1. Project > Properties öğesini seçin ve ardından Application sekmesini seçin.

  2. Derleme adı için paketinize benzersiz bir tanımlayıcı verin. Zaten var olan bir adı taşıyan bir paket yayımlamaya çalışırsanız bir hata görürsünüz.

    Important

    Kullanmakta olduğunuz nuget.org veya başka bir konakta pakete benzersiz bir tanımlayıcı vermelisiniz. Aksi takdirde bir hata oluşur. Yayımlama adımı paketi genel olarak görünür hale getirdiğinden, bu hızlı başlangıçta ada Örnek veya Test eklemenizi öneririz.

  3. Bildirime taşınan diğer özellikleri girebileceğiniz bir iletişim kutusu görüntüleyen Derleme Bilgileri'ni seçin (bkz . Değiştirme belirteçleri). En yaygın kullanılan alanlar Başlık, Açıklama, Şirket, Telif Hakkı ve Derleme sürümüdür. Bu özellikler paketinizi yayımladıktan sonra nuget.org gibi bir konakta göründüğü için bunların tamamen açıklayıcı olduğundan emin olun.

    Visual Studio'daki bir .NET Framework projesinde yer alan Derleme Bilgileri sayfasını gösteren ekran görüntüsü.

  4. (İsteğe bağlı) Özellikleri doğrudan görmek ve düzenlemek için project Project> öğesini seçerek project Properties/AssemblyInfo.cs dosyasını açın.

  5. Bu özellikleri ayarladıktan sonra Active çözüm yapılandırmasınıBuild>Configuration ManagerRelease olarak ayarlayın ve güncelleştirilmiş DLL'yi oluşturmak için projeyi yeniden oluşturun.

İlk bildirimi oluşturma

Proje özelliklerini ayarladıktan ve DLL'yi oluşturduktan sonra, artık projeden bir ilk .nuspec dosyası oluşturabilirsiniz. Bu adım, proje dosyasından bilgi çekmek için ilgili değiştirme/yenileme belirteçlerini içerir.

İlk bildirimi oluşturmak için yalnızca bir kez çalıştırın nuget spec . Paketi güncelleştirirseniz, projenizdeki değerleri değiştirin veya bildirimi doğrudan düzenleyin:

  1. Projeniz Solution Explorer açıkken, Tools>Command Line>Geliştirici Komut İstemi'i seçerek bir komut istemi açın.

    Komut istemi, dosyanın bulunduğu AppLogger.csproj proje dizininizde açılır.

  2. Şu komutu çalıştırın: nuget spec AppLogger.csproj.

    NuGet, bu örnekte AppLogger.nuspecprojenin adıyla eşleşen bir bildirim oluşturur. Manifest dosyasındaki değiştirme belirteçlerini de içerir.

  3. İçeriğini incelemek için bir metin düzenleyicisinde açın AppLogger.nuspec ; bu, aşağıdaki koda benzer olacaktır:

    <?xml version="1.0"?>
    <package >
      <metadata>
        <id>Package</id>
        <version>1.0.0</version>
        <authors>Your username</authors>
        <owners>Your username</owners>
        <license type="expression">MIT</license>
        <!-- <icon>icon.png</icon> -->
        <projectUrl>http://PROJECT_URL_HERE_OR_DELETE_THIS_LINE</projectUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>Package description</description>
        <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
        <copyright>Copyright 2022</copyright>
        <tags>Tag1 Tag2</tags>
      </metadata>
    </package>
    

Bildirimi düzenleme

  1. Devam etmeden önce aşağıdaki özellikleri düzenleyin. Aksi takdirde, dosyanızda .nuspec varsayılan değerlerle bir NuGet paketi oluşturmaya çalışırsanız bir hata oluşur. Bu özellikler hakkında bilgi için bkz. İsteğe bağlı meta veri öğeleri:

    • licenseUrl
    • projectUrl
    • sürüm notları
    • tags
  2. Genel tüketim için oluşturulmuş paketler için Etiketler özelliğine özellikle dikkat edin. Etiketler, başkalarının paketinizi bulmasına ve ne yaptığını anlamasına yardımcı olur.

  3. .nuspec dosya referansında açıklandığı gibi, şu anda manifest dosyasına başka öğeler de ekleyebilirsiniz.

  4. Devam etmeden önce dosyayı kaydedin.

Pack komutunu çalıştırma

  1. Projeniz Solution Explorer açıkken, Tools>Command Line>Geliştirici Komut İstemi'i seçerek bir komut istemi açın.

    Komut istemi proje dizininizde açılır.

  2. Şu komutu çalıştırın: nuget pack.

    NuGet, geçerli klasörde identifier.version.nupkg biçiminde bir .nupkg dosyası oluşturur.

Paketi yayımlama

.nupkg dosyasını oluşturduktan sonra, nuget.org'dan alınan bir API anahtarıyla NuGet CLI'yi kullanarak nuget.org'a yayımlayın. nuget.org için 4.1.0 veya üzeri bir sürüm kullanmanız gerekir.

Paketinizi genel bir galeri yayımlamadan önce test etmek ve doğrulamak istiyorsanız, nuget.org yerine int.nugettest.org gibi bir test ortamına yükleyebilirsiniz. int.nugettest.org yüklenen paketlerin korunmayabileceğini unutmayın.

Note

  • Nuget.org, karşıya yüklenen tüm paketleri virüslere karşı tarar ve virüs içeren 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 hakkında.

API anahtarınızı alma

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

  2. Sağ üst köşede 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 girin.

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

  5. Paketleri Seç'in altında, Glob Deseni için bir yıldız işareti ()* girin.

  6. Oluştur'i seçin.

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

    Yeni API anahtarını gösteren bir nuget.org sayfasının ekran görüntüsü, anahtarı şimdi kopyalamayla ilgili bir ileti ve vurgulanan Kopyala düğmesi.

Important

  • API anahtarınızı her zaman gizli tutun. API anahtarı, herkesin sizin adınıza paketleri yönetmek için kullanabileceği 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ın bir yolunu sağlar. 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ı.

NuGet CLI ile yayımlama

NuGet CLI(nuget.exe) kullanmak, .NET CLI'yi kullanmaya alternatiftir:

  1. Bir komut istemi açın ve .nupkg dosyasını içeren klasöre geçin.

  2. Aşağıdaki komutu çalıştırın. <Paket dosya adını> paketinizin dosya adıyla değiştirin ve api anahtarı değerini< API anahtarınızla değiştirin>. Paket dosya adı, paket kimliğinizin ve sürüm numaranızın .nupkg uzantısıyla birleştirilmiş halidir. Örneğin, AppLogger.1.0.0.nupkg:

    nuget push <package filename> <api key value> -Source https://api.nuget.org/v3/index.json
    

    Yayımlama işleminin sonucu aşağıdaki gibi görüntülenir:

    Pushing <package filename> to 'https://www.nuget.org/api/v2/package'...
        PUT https://www.nuget.org/api/v2/package/
        Created https://www.nuget.org/api/v2/package/ 6829ms
    Your package was pushed.
    

Daha fazla bilgi için bkz. nuget push.

Yayımlama hataları

Komutunu çalıştırdığınızda push bazen bir hatayla karşılaşırsınız. Örneğin, aşağıdaki durumlarda bir hata alabilirsiniz:

  • API anahtarınız geçersiz veya süresi dolmuş.
  • Sunucuda zaten var olan bir tanımlayıcıya sahip bir paket yayımlamaya çalışıyorsunuz.
  • Yayımlanmış bir pakette değişiklik yaparsınız, ancak yeniden yayımlamayı denemeden önce sürüm numarasını güncelleştirmeyi unutursunuz.

Hata iletisi genellikle sorunun kaynağını gösterir.

Örneğin, tanımlayıcının Contoso.App.Logger.Test nuget.org'da var olduğunu varsayalım. Bu tanımlayıcıya sahip bir paket yayımlamaya çalışırsanız aşağıdaki hatayı alırsınız:

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 durumu ele almak için API anahtarınızın kapsamını, son kullanma tarihini ve değerini denetleyin. Anahtar geçerliyse, hata paket tanımlayıcısının konakta zaten var olduğunu gösterir. Sorunun üstesinden gelmek 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 deneyin push .

Yayımlanan paketi yönetme

Paketiniz başarıyla yayımlandığında bir onay e-postası alırsınız. Yayımlanan paketi görmek için nuget.org gidin, sağ üst köşeden kullanıcı adınızı seçin ve ardından Paketleri Yönet'i seçin.

Note

Paketinizin dizine alınması ve başkalarının bulabildiğ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:

Paketin henüz yayımlanmadığı hakkında nuget.org uyarı iletisinin ekran görüntüsü. Metinde doğrulama ve dizin oluşturma işleminin bir saat sürebileceği belirtiliyor.

NuGet paketiniz nuget.org yayımlandıktan sonra diğer geliştiriciler bu paketi projelerinde kullanabilir.

Kullanışlı olmayan bir paket oluşturursanız (örneğin, boş bir sınıf kitaplığındaki bu örnek paket) veya paketin görünür olmasını istemiyorsanız, arama sonuçlarından gizlemek için paketin listesini kaldırabilirsiniz:

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

    nuget.org Paketleri sayfasının ekran görüntüsü. Yayımlanan Paketler bölümünde bir paket listelenir. Düzenleme simgesi vurgulanır.

  2. Sonraki sayfada Liste'yi seçin, Arama sonuçlarında listele onay kutusunu temizleyin ve kaydet'i seçin.

    nuget.org sayfasının ekran görüntüsü. Listeleme bölümünde, paketi arama sonuçlarında listeleme seçeneği vurgulanır.

Artık Paket Yönet Paketi bölümündeki Listelenmemiş Paketler altında görünür ve arama sonuçlarında artık görünmez.

Note

Test paketinizin nuget.org üzerinde canlı durumda olmaması için https://int.nugettest.org konumundaki nuget.org test sitesine gönderebilirsiniz. int.nugettest.org'a yüklenen paketlerin korunmayabileceğine dikkat edilmelidir.

Sonraki Adımlar

Visual Studio .NET Framework kullanarak NuGet paketi oluşturduğunuz için tebrikler. NuGet CLI ile NuGet paketi oluşturmayı öğrenmek için sonraki makaleye ilerleyin.

NuGet'in sunacağı daha fazlasını keşfetmek için aşağıdaki makalelere bakın: