NuGet.exe kullanarak komut satırından NuGet paketlerini yayımlama

Azure DevOps Hizmetleri | Azure DevOps Server | Azure DevOps Server 2022

Bu makale, iki kimlik doğrulama akışı kullanarak akışınıza bağlanma ve paketleri yayımlama konusunda size yol gösterir: kendi kuruluşunuzdaki akışlar için Azure Artifacts Kimlik Bilgisi Sağlayıcısı ve farklı bir kuruluşta barındırılan akışlar için kişisel erişim belirteci (PAT).

Önkoşullar

Azure Artifacts Kimlik Bilgisi Sağlayıcısını ayarlama

Azure Artifacts Kimlik Bilgisi Sağlayıcısı, Azure Artifacts akışlarınızda güvenli kimlik doğrulaması sağlar. nuget.exeile kullanmak için önce NuGet'in eklenti arama yoluna eklemeniz gerekir. Ayrıntılar için bkz. Eklenti Yükleme ve bulma. Eklenti eklendikten sonra işletim sisteminiz için yükleme adımlarını izleyin:

Azure Artifacts Kimlik Bilgisi Sağlayıcısı'nı yüklemek için aşağıdaki yöntemlerden birini kullanın:

El ile yükleme

  1. En son Microsoft.NetFx48.NuGet.CredentialProvider.zip sürümünü indirin.

  2. Zip dosyasını ayıklayın.

  3. Çıkarılan arşivdeki netfx klasörünü %UserProfile%/.nuget/plugins/ konumuna kopyalayın. klasör netfx , nuget.exe uyumluluk için gereklidir.

Yardımcı betiği kullanarak yükleyin

Alternatif olarak, kolaylaştırılmış bir yükleme için otomatik yardımcı betiği kullanabilirsiniz. PowerShell 5.1 veya sonraki bir sürümüne sahip olduğunuzdan emin olun ve şunu çalıştırın:

iex "& { $(irm https://aka.ms/install-artifacts-credprovider.ps1) } -AddNetfx"

Daha fazla bilgi için Azure Artifacts Kimlik Bilgisi Sağlayıcısı deposuna bakın.

Akışa bağlanma

Paketlerinizi yayımlamadan önce projenizi ayarlayın ve akışınıza aşağıdaki gibi bağlanın:

  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. Artifacts'i seçin ve ardından açılır menüden beslemenizi seçin.

  3. Select Bağlanbeslemeye, ardından sol gezinme bölmesinden NuGet.exe öğesini seçin.

  4. .csproj veya nuget.config dosyanızla aynı klasöre, projenize bir .sln dosyası ekleyin. Sağlanan XML parçacığını dosyanıza yapıştırın. Kod parçacığı aşağıdaki gibi görünmelidir:

    • Kuruluş genelinde akış:

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
    • Proje kapsamına sahip akış :

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <packageSources>
          <clear />
          <add key="<SOURCE_NAME>" value="https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json" />
        </packageSources>
      </configuration>
      
  1. Azure DevOps sunucunuzda oturum açın ve projenize gidin.

  2. Yapıtlar'ı seçin ve ardından akışınızı seçin.

  3. Akışa Bağlanseçeneğini belirleyin ve ardından sol gezinti bölmesinden NuGet.exe seçin.

  4. Projenize, .csproj veya nuget.config dosyanızla aynı klasörde bir .sln dosyası ekleyin ve ardından sağlanan XML kod parçacığını dosyanıza yapıştırın.

Aynı kuruluştaki bir akışa yayımlama

Azure Artifacts Kimlik Bilgisi Sağlayıcısı'nı kullanarak yapılandırıp nuget.config kimlik doğrulaması yaptıktan sonra, akışınızda bir paket yayımlamak için aşağıdaki komutu çalıştırın. Yer tutucuları uygun değerlerle değiştirin:

nuget push <PACKAGE_PATH> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -ApiKey <ANY_STRING>

Örnek:

nuget push MyPackage.5.0.2.nupkg -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -ApiKey AZ

Not

Azure Artifacts Kimlik Bilgisi Sağlayıcısı gönderme için gerçek kimlik doğrulamasını işler, ancak NuGet yine de komutu kabul etmek için bir -ApiKey değer gerektirir. Azure Artifacts sağladığınız değeri yoksayar, böylece tüm boş dizeler çalışır.

Başka bir kuruluştaki bir akışta yayımlama

Hedef akış farklı bir Azure DevOps kuruluşundaysa, bu kuruluşta bir PAT oluşturun ve akışı dosyanıza nuget.config kaynak olarak ekleyin.

  1. Paketleme>Okuma ve yazma kapsamıyla hedef kuruluşta kişisel erişim belirteci (PAT) oluşturun.

  2. Akışı kaynak olarak eklemek için aşağıdaki komutu çalıştırın. Bu komut PAT’nizi nuget.config öğesine ekler; bu nedenle dosyayı güvenli bir şekilde saklayın ve kaynak denetimine eklemeyin.

    nuget sources Add -Name <SOURCE_NAME> -Source https://pkgs.dev.azure.com/<ORGANIZATION_NAME>/<PROJECT_NAME>/_packaging/<FEED_NAME>/nuget/v3/index.json -UserName <USER_NAME> -Password <PERSONAL_ACCESS_TOKEN> -config <PATH_TO_NUGET_CONFIG_FILE>
    
  3. Yeni eklediğiniz kaynak adını kullanarak paketi yayımlayın.

    nuget push <PACKAGE_PATH> -Source <SOURCE_NAME> -ApiKey <ANY_STRING>
    

Örnek:

nuget sources Add -Name "MySource" -Source https://pkgs.dev.azure.com/MyOrg/MyProject/_packaging/MyFeed/nuget/v3/index.json -UserName MyUserName -Password YourPersonalAccessToken -config ./nuget.config
nuget push nupkgs/mypackage.1.1.8.nupkg -Source MySource -ApiKey AZ

Not

Kuruluşunuz bir güvenlik duvarı veya ara sunucu kullanıyorsa, Azure Artifacts etki alanı URL’lerine ve IP adreslerine izin verin.

Troubleshooting

Kimlik doğrulama istemi görünmüyor

Azure Artifacts Kimlik Bilgisi Sağlayıcısı'nın yüklü olduğundan ve NuGet veya sonraki bir sürümünü 4.8.0.5385 kullandığınızdan emin olun. Kurulum adımları için bkz. NuGet.exe ile Azure Artifacts akışlarına bağlanma.

Sürüm zaten mevcut olduğundan yayımlama başarısız oluyor

Azure Artifacts paket sürümleri sabittir. Bir sürümü yayımladıktan sonra, paketi silseniz bile sürümün üzerine yazamaz veya aynı sürüm numarasını yeniden kullanamazsınız. Paket sürümünü güncelleştirin, paketi yeniden derleyin ve sonra yeniden yayımlayın.

Yayımlama, güvenlik duvarı ya da ara sunucu arkasında başarısız olur

Azure Artifacts Etki Alanı URL'lerine ve IP adreslerine izin verin ve yayımlama işlemini yeniden deneyin.

Yayımlama işlemi 403 hatasıyla başarısız oluyor

Bu hata genellikle hesabınızın akış üzerinde yayımlama izinlerine sahip olmadığı anlamına gelir. Paketleri gönderebilmek için en az Feed Publisher (Contributor) rolüne sahip olmanız gerekir. Akış sahibinden rolünüzü güncellemesini isteyin ve ardından yeniden deneyin.