NuGet görevi

Sürüm 2.

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018

Not

NuGet Kimlik Doğrulaması görevi, Azure Artifacts ve diğer NuGet depoları ile kimlik doğrulaması yapmak için önerilen yeni bir yol. Bu görev artık yeni özelliklere sahip değildir ve yalnızca kritik hatalar giderildi.

NuGet paket bağımlılıklarını yüklemek ve güncelleştirmek veya NuGet paketlerini pakete almak ve yayımlamak için bu görevi kullanın. Uygulama NuGet.exe kullanır ve .NET Framework çalışır. .NET Core ve .NET Standard için .NET Core görevini kullanın.

Not

Microsoft Team Foundation Server (TFS) 2018 ve önceki sürümlerde, derleme ve yayın işlem hatları tanımlar olarak adlandırılır, çalışmalara derlemeler denir, hizmet bağlantılarına hizmet uç noktaları denir, aşamalar ortamlar olarak adlandırılır ve işler aşamalar olarak adlandırılır.

Kodunuz NuGet paketlerine bağlı ise, derleme adımından önce bu adımı Visual Studio emin olun. Ayrıca, bu adımda kullanım dışı NuGet Paketlerini Geri Yükle onay kutusunu temizleyin.

.NET Core veya .NET Standard ile çalışıyorsanız, tüm paket senaryoları için tam destek içeren ve şu anda dotnet tarafından desteklenen .NET Core görevini kullanın.

İpucu

NuGet görevinin bu sürümü varsayılan olarak NuGet 4.1.0 kullanır. NuGet'in farklı bir sürümünü seçmek için Araç Yükleyicisi'ne tıklayın.

YAML kod parçacığı

# NuGet
# Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.
- task: NuGetCommand@2
  inputs:
    #command: 'restore' # Options: restore, pack, push, custom
    #restoreSolution: '**/*.sln' # Required when command == Restore
    #feedsToUse: 'select' # Options: select, config
    #vstsFeed: # Required when feedsToUse == Select
    #includeNuGetOrg: true # Required when feedsToUse == Select
    #nugetConfigPath: # Required when feedsToUse == Config
    #externalFeedCredentials: # Optional
    #noCache: false 
    #disableParallelProcessing: false 
    restoreDirectory: 
    #verbosityRestore: 'Detailed' # Options: quiet, normal, detailed
    #packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # Required when command == Push
    #nuGetFeedType: 'internal' # Required when command == Push# Options: internal, external
    #publishVstsFeed: # Required when command == Push && NuGetFeedType == Internal
    #publishPackageMetadata: true # Optional
    #allowPackageConflicts: # Optional
    #publishFeedCredentials: # Required when command == Push && NuGetFeedType == External
    #verbosityPush: 'Detailed' # Options: quiet, normal, detailed
    #packagesToPack: '**/*.csproj' # Required when command == Pack
    #configuration: '$(BuildConfiguration)' # Optional
    #packDestination: '$(Build.ArtifactStagingDirectory)' # Optional
    #versioningScheme: 'off' # Options: off, byPrereleaseNumber, byEnvVar, byBuildNumber
    #includeReferencedProjects: false # Optional
    #versionEnvVar: # Required when versioningScheme == ByEnvVar
    #majorVersion: '1' # Required when versioningScheme == ByPrereleaseNumber
    #minorVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #patchVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #packTimezone: 'utc' # Required when versioningScheme == ByPrereleaseNumber# Options: utc, local
    #includeSymbols: false # Optional
    #toolPackage: # Optional
    #buildProperties: # Optional
    #basePath: # Optional, specify path to nuspec files
    #verbosityPack: 'Detailed' # Options: quiet, normal, detailed
    #arguments: # Required when command == Custom

Bağımsız değişkenler

Bağımsız Değişken Description
command
Komut
Çalıştıracak NuGet komutu. Bağımsız değişkenler eklemek veya farklı bir komut kullanmak için 'Özel'i seçin.
Seçenekler: restore , pack , custom , push
restoreSolution
Çözüm yolu, packages.config veya project.jsaçık
Çözümün yolu, packages.config veya project.jsgeri yüklenecek paketlere başvurulan dosyada yer alan bir dosyadır.
feedsToUse
Kullanmak için akışlar
Akışlardan bir akış Azure Artifacts veya NuGet.org bir nuget.config dosyasını kaynak kod deponıza işleyecek ve yolunu burada ayarlayabilirsiniz. Seçenekler: select , config .
vstsFeed
Bu Azure Artifacts/TFS akışından paketleri kullanma
Seçilen akışı oluşturulan akışa NuGet.config. Burada bir Azure Artifacts seçmek için yüklü ve lisanslı bir kullanıcınız olması gerekir.
includeNuGetOrg
Paketlerden NuGet.org
Oluşturulan NuGet.org dahil NuGet.config. Varsayılan değer: true . olduğunda feedsToUse == Select gereklidir.
nugetConfigPath
NuGet.config yolu
Depo NuGet.config paketlerin geri yüklensin akışlarını belirten komut. Gerekli olduğunda feedsToUse == Config
externalFeedCredentials
Bu kuruluş/koleksiyon dışındaki akışlar için kimlik bilgileri
Seçilen kayıt defterleri içinde bulunan dış kayıt defterleri için NuGet.config. Bu, NuGet hizmet bağlantının adıdır. Bu kuruluş/koleksiyonda akışlar için bunu boş bırakın; Derlemenin kimlik bilgileri otomatik olarak kullanılır.
noCache
Yerel önbelleği devre dışı bırakma
NuGet'in yerel makine önbelleklerinden paketleri kullanmasını önler.
disableParallelProcessing
Paralel işlemeyi devre dışı bırakma
NuGet'in birden çok paketi paralel olarak yüklemesini önler.
restoreDirectory
Hedef dizin
Paketlerin yüklü olduğu klasörü belirtir. Klasör belirtilmezse, paketler seçilen çözümle birlikte bir packages/ klasörüne geri yüklenir, packages.config veya project.jsyüklenir.
verbosityRestore
Ayrıntı Düzeyi
Çıktıda görüntülenen ayrıntı miktarını belirtir.
Seçenekler: Quiet , Normal , Detailed
nuGetFeedType
Hedef akış konumu
Hedef akışın bir iç akış/koleksiyon mu yoksa dış NuGet sunucusu mu olduğunu belirtir.
Seçenekler: internal , external . Gerekli olduğunda command == Push
publishVstsFeed
Hedef akış
Bu hesapta barındırılan bir akış seçin. Burada bir Azure Artifacts seçmek için yüklü ve lisanslı bir kullanıcınız olması gerekir.
packagesToPush
Paketlerin konumu
Nupkg dosyalarıyla eşleşmeye veya yoluna giden desen, örneğin: '$(Build.ArtifactStagingDirectory)/*.nupkg' . Gerekli olduğunda command == Push
publishPackageMetadata
İşlem hattı meta verilerini yayımlama
Sürekli olarak bir paket kümesi yayımlarsanız ve yalnızca değişen paketlerin alt kümesinin sürüm numarasını değiştirirseniz bu seçeneği kullanın.
allowPackageConflicts Bazı paketleriniz 409 Çakışma hatasıyla reddedilmiş olsa bile görevin başarılı olduğunu bildirmeye olanak sağlar.
Bu NuGet.exe çakışmayla karşılaşırsanız görev başarısız olur. Bu seçenek çalışmaz ve bir ara sunucu ortamındaysanız yayımlama başarısız olur.
publishFeedCredentials
NuGet sunucusu
Dış NuGet sunucusunun kimlik bilgilerini içeren NuGet hizmet bağlantısı.
verbosityPush
Ayrıntı Düzeyi
Çıktıda görünen ayrıntı miktarını belirtir.
Seçenekler: Quiet , Normal , Detailed
packagesToPack
Paketle veya nuspec dosya (ler) in paket yolu
Csproj dizinlerini paketlemesine aramak için kullanılacak model.
Birden çok deseni noktalı virgülle ayırabilir ve '! ' ile önek olarak ekleyerek bir deseni negatif hale getirebilirsiniz. Örnek: **\\*.csproj;!**\\*.Tests.csproj
configuration
Paketteki yapılandırma
Csproj dosyası kullanırken paketin yapılandırmasını belirtir.
packDestination
Paket klasörü
Paketlerin oluşturulacağı klasör. Boşsa, paketler kaynak kökte oluşturulur.
versioningScheme
Otomatik paket sürümü oluşturma
Başvurulan projelerle birlikte kullanılamaz. ' Tarih ve saati kullan ' seçeneğini belirlerseniz, bu, X, Y ve Z 'yi seçtiğiniz yere göre biçimlendirilen bir Semveruyumlu sürüm oluşturur X.Y.Z-ci-datetime .
' Bir ortam değişkeni kullan ' seçeneğini belirlerseniz, bir ortam değişkeni seçmeniz ve kullanmak istediğiniz sürüm numarasını içerdiğinden emin olmanız gerekir.
' Yapı numarasını kullan ' seçeneğini belirlerseniz, bu, paketinizin sürümü için yapı numarasını kullanır. Note: Seçenekler altında, yapı numarası biçimini '$ (BuildDefinitionName) _ $ (Year: yyyy). $ (month). $ (DayOfMonth) $ (Rev:. r)' olarak ayarlayın.
Seçenekler: off , byPrereleaseNumber , byEnvVar , byBuildNumber
includeReferencedProjects
Ortam değişkeni
Değişken adını $, $env veya% olmadan girin.
majorVersion
Ana
X. Y. Z sürümündeki ' x '
minorVersion
İkincil
X. Y. Z sürümündeki ' Y '
patchVersion
Patch
X.Y.Z sürümündeki 'Z'
packTimezone
Saat dilimi
Paketin sürümünü üretmek için kullanılan istenen saat dilimini belirtir. Barındırılan derleme aracılarını kullanıyorsanız UTC'yi seçmeniz önerilir çünkü bunların tarihi ve saati farklılık gösterebilir.
Seçenekler: utc , local
includeSymbols
Sembol paketi oluşturma
Paketin kaynaklar ve semboller içerdiğini belirtir. Bir .nuspec dosyasıyla birlikte kullanılırsa, bu normal bir NuGet paket dosyası ve karşılık gelen semboller paketi oluşturur.
toolPackage
Araç Paketi
Projenin çıkış dosyalarının araç klasöründe olup olmadığını belirler.
buildProperties
Ek derleme özellikleri
.nuspec dosyasındaki her $token$ oluşumunun verilen değerle değiştirileci=değer çiftlerinin noktalı virgülle ayrılmış bir listesini belirtir. Değerler, tırnak işaretleri içinde dizeler olabilir.
basePath
Temel yol
Nuspec dosyasında tanımlanan dosyaların temel yolu.
verbosityPack
Ayrıntı Düzeyi
Çıktıda görüntülenen ayrıntı miktarını belirtir.
Seçenekler: Quiet , Normal , Detailed
arguments
Komut ve bağımsız değişkenler
Komut ve bağımsız değişkenler, yürütme için NuGet.exe geçirebilirsiniz. NuGet 3.5 veya sonrası kullanılırsa, Bu kuruluş/koleksiyonda Proje Koleksiyonu Derleme Hizmeti'nin erişimi olan herhangi bir akışta liste, geri yükleme ve yayımlama gibi kimliği doğrulanmış komutlar otomatik olarak doğrulanır.
Denetim seçenekleri

Sürüm oluşturma düzenleri

Bypreeleasenumber için, sürüm, büyük, ikincil ve düzeltme eki için seçtiğiniz her ve Tarih ve saat biçiminde olacak şekilde ayarlanır yyyymmdd-hhmmss .

Byenvvar için sürüm, versionenvvar parametresi tarafından belirtilen ada sahip ortam değişkeninin değerine ayarlanır MyVersion (örneğin $ , yalnızca ortam değişkeni adı). Ortam değişkeninin, veya gibi uygun bir SemVer olarak ayarlandığından emin olun 1.2.3 1.2.3-beta1 .

Bybuildnumber için sürüm, işlem hattı çalışmasının yapı numarası kullanılarak ayarlanır. Bu, name ortam değişkenine kaydedilen işlem hattının özelliği için belirtilen değerdir BUILD_BUILDNUMBER . Kullanılan yapı numarasının uygun bir SemVer (ör.) içerdiğinden emin olun 1.0.$(Rev:r) . Bybuildnumber kullanılırken, görev, 1.2.3.4 derleme numarası dizesinden noktalı sürümü ayıklar ve yalnızca o bölümü kullanır. Dizenin geri kalanı bırakılacak. Yapı numarasını olduğu gibi kullanmak istiyorsanız, yukarıda açıklanan şekilde Byenvvar öğesini kullanabilir ve versionenvvar öğesini olarak ayarlayabilirsiniz BUILD_BUILDNUMBER .

Örnekler

Geri Yükleme

Seçili bir akıştan tüm çözümlerinizi paketlerle geri yükleyin.

# Restore from a project scoped feed in the same organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-project/my-project-scoped-feed'
    includeNuGetOrg: false
    restoreSolution: '**/*.sln'
# Restore from an organization scoped feed in the same organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-organization-scoped-feed'
    restoreSolution: '**/*.sln'
# Restore from a feed in a different organization
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: config
    nugetConfigPath: ./nuget.config
    restoreSolution: '**/*.sln'
    externalFeedCredentials: 'MyServiceConnectionName'
    noCache: true
  continueOnError: true
# Restore from feed(s) set in nuget.config
- task: NuGetCommand@2
  inputs:
    command: 'restore'
    feedsToUse: 'config'
    nugetConfigPath: 'nuget.config'

Paket

Hedef klasörde bir NuGet paketi oluşturun.

# Package a project
- task: NuGetCommand@2
  inputs:
    command: 'pack'
    packagesToPack: '**/*.csproj'
    packDestination: '$(Build.ArtifactStagingDirectory)'

Gönder

Not

İşlem hattı yapıtları System.ArtifactsDirectory dizine indirilir. packagesToPush değer, $(System.ArtifactsDirectory)/**/*.nupkg yayın ardışık düzeninde ayarlanabilir.

  • NuGet.config tanımlanan bir akışa paket gönderin/yayımlayın.

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
        feedsToUse: 'config'
        nugetConfigPath: '$(Build.WorkingDirectory)/NuGet.config'
    
  • Bir paketi bir proje kapsamına gönderme/yayımlama

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        feedsToUse: 'select'
        vstsFeed: 'my-project/my-project-scoped-feed'
        publishVstsFeed: 'myTestFeed'
    
  • NuGet.org 'e paket gönderme/yayımlama

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        feedsToUse: 'config'
        includeNugetOrg: 'true'
    

Özel

Varsayılan olanların yanı sıra başka bir NuGet komutunu çalıştırın: paketleme, gönder ve geri yükleme.

# list local NuGet resources.
- task: NuGetCommand@2
  displayName: 'list locals'
  inputs:
    command: custom
    arguments: 'locals all -list'

Açık kaynak

GitHub 'dakiAzure Pipelines ve kullanıma hazır görevleri Team Foundation Server inceleyin. Geribildirim ve katılımlar hoş geldiniz.

SSS

Neden NuGet.Config denetmalıyım?

Kaynak denetimine bir NuGet.Config denetlemek, projenizi oluşturmak için gereken bir bilgi parçasının, kendi paketlerinin konumunu, kodunuzun kontrol eden her geliştirici tarafından kullanılabilir olmasını sağlar.

Bununla birlikte, geliştiricilerin bir ekibinin büyük bir proje yelpazesi üzerinde çalıştığı durumlarda, her geliştiricinin makinesinde Global NuGet.Config bir Azure Artifacts akışı eklemek de mümkündür. Bu durumlarda, NuGet görevinde "Buradan seçdiğim akışlar" seçeneğinin kullanılması bu yapılandırmayı çoğaltır.

Azure Artifacts hakkında nereden bilgi edinebilirim?

Azure Artifacts Belgeleri

NuGet hakkında nereden daha fazla bilgi edinebilirim?

NuGet belgeleri Bakýþ

NuGet oluşturma Paketleme ve yayımlama

NuGet tüketme Bağımlılıkları almak için bir çözüm ayarlama

Ne tür uygulamalar derleyebilir?

Uygulama örneklerinizi derleyin ve dağıtın

Diğer tür derleme görevleri kullanılabilir mi?

Derleme ve yayın görevleri kataloğu

Kod tabanımız derleme kesmeleriyle nasıl korunduk?

Derleme işlem hatımın diğer bölümlerini değiştirmek Nasıl yaparım? mı?

Paralel çoklu yapılandırma seçtim, ancak aynı anda yalnızca bir derleme çalışıyor.

Azure Pipelines kullanıyorsanız, daha paralel işlerin olması gerekebilir. Bkz. Azure Pipelines paralel işler.

Derleme ardışık düzeninde nelerin değiştiğini görmek Nasıl yaparım? mi?

Derleme işlem hattının değişiklik geçmişini görüntüleme

Bir aracıya ihtiyacım var mı?

Yapınızı veya sürümünüzü çalıştırmak için en az bir aracınız olması gerekir.

Sorun yaşıyorum. Sorunları nasıl giderebilirim?

Bkz. derleme ve yayın sorunlarını giderme.

Varsayılan bir aracı havuzu seçemiyorum ve derleme veya yayınımı sıraya alamıyorum. Bu Nasıl yaparım? düzeltilsin mi?

Bkz. Aracı havuzları.

NuGet Push görevlerim şu hata ile başarısız oluyor: "hata: yerel veren sertifikası alınamıyor". Bunu nasıl giderebilirim?

Bu, güvenilen kök sertifika eklenerek düzeltilebilir. NODE_EXTRA_CA_CERTS=fileOrtam değişkenini yapı aracıya ekleyebilir veya NODE.EXTRA.CA.CERTS=file görev değişkenini işlem hattınızda ekleyebilirsiniz. Daha fazla ayrıntı için bkz. ortam değişkenleri .

TFS 'yi şirket içinde kullanıyorum ve bu özelliklerden bazılarını görmüyorum. Neden olmasın?

Bu özelliklerden bazıları yalnızca Azure Pipelines kullanılabilir ve şirket içinde henüz kullanılabilir değil. TFS 'nin en son sürümüne yükselttiysenizbazı özellikler şirket içinde kullanılabilir.

Ardışık düzen, farklı bir projedeki bir akışa erişmesi gerekiyor

İşlem hattı akışı barındıran projeden farklı bir projede çalışıyorsa, derleme hizmetine okuma/yazma erişimi vermek için diğer projeyi kurmanız gerekir. Diğer ayrıntılar için bkz. Azure Pipelines paket izinleri.