NuGet görev

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ıyla kimlik doğrulamak için önerilen yeni yoldur. Bu görev artık yeni özellikler içermez ve yalnızca kritik hatalar giderilmiştir.

NuGet paket bağımlılıklarını yüklemek ve güncelleştirmek ya da NuGet paketlerini paketlemek ve yayımlamak için bu görevi kullanın. NuGet.exe kullanır ve .NET Framework uygulamalarla birlikte kullanılır. .NET Core ve .NET Standard uygulamaları 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ımlarolarak adlandırılır, çalışmalaraderlemelerdenir, hizmet bağlantılarınahizmet uç noktalarıdenir, aşamalarortamlarolarak adlandırılır ve işleraşamalarolarak adlandırılır.

kodunuz NuGet paketlerine bağımlıysa, Visual Studio derleme adımınızaönce bu adımı eklediğinizden emin olun. ayrıca, bu adımdaki kullanım dışı geri yükleme NuGet paketleri onay kutusunu temizlediğinizden emin olun.

.NET Core veya .NET Standard ile çalışıyorsanız, tüm paket senaryoları için tam desteğe sahip .NET Core görevini kullanın ve şu anda DotNet tarafından desteklenmektedir.

İpucu

NuGet görevinin bu sürümü varsayılan olarak NuGet 4.1.0 kullanır. farklı bir NuGet sürümü seçmek için araç yükleyicisinikullanı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ırılacak NuGet komutu. Bağımsız değişken eklemek veya farklı bir komut kullanmak için ' Custom ' seçeneğini belirleyin.
Seçenekler: restore , pack , custom , push
restoreSolution
Çözüm, packages.config veya Project. JSON yolu
Geri yüklenecek paketlere başvuran çözüm, packages.config veya Project. json dosyasının yolu.
feedsToUse
Kullanılacak akışlar
Azure Artifacts ve/veya NuGet. org ' dan bir akış seçebilir ya da kaynak kodu deponuza bir nuget.config dosyası kaydedebilir ve yolunu burada ayarlayabilirsiniz.
Seçenekler: select , config .
vstsFeed
bu Azure Artifacts/tfs akışındaki paketleri kullan
Seçili akışı oluşturulan NuGet.config ekleyin. burada bir akış seçmek için Azure Artifacts yüklü ve lisanslı bir lisansa sahip olmanız gerekir.
includeNuGetOrg
NuGet. org 'daki paketleri kullanma
NuGet. org öğesini oluşturulan NuGet.config ekleyin. Varsayılan değer true .
Ne zaman gereklidir feedsToUse == Select .
nugetConfigPath
NuGet.config yolu
Depodaki paketlerin geri yükleneceği akışları belirten NuGet.config.
Ne zaman gerekir feedsToUse == Config
externalFeedCredentials
Bu kuruluşun/koleksiyonun dışındaki akışlar için kimlik bilgileri
Seçili NuGet.config bulunan dış kayıt defterleri için kullanılacak kimlik bilgileri. bu, NuGet hizmeti bağlantınızın adıdır. Bu kuruluştaki/koleksiyondaki akışlar için bu alanı boş bırakın; Yapı kimlik bilgileri otomatik olarak kullanılır.
noCache
Yerel önbelleği devre dışı bırak
NuGet, yerel makine önbelleklerinden paket kullanmasını engeller.
disableParallelProcessing
Paralel işlemeyi devre dışı bırak
NuGet paralel olarak birden çok paket yüklemesini engeller.
restoreDirectory
Hedef Dizin
Paketlerin yüklendiği klasörü belirtir. Hiçbir klasör belirtilmemişse, paketler seçilen çözüm, packages.config veya Project. JSON ile birlikte bir paketlere/klasöre geri yüklenir.
verbosityRestore
Ayrıntı Düzeyi
Çıktıda görünen ayrıntı miktarını belirtir.
Seçenekler: Quiet , Normal , Detailed
nuGetFeedType
Hedef akış konumu
hedef akışın bir iç akış/koleksiyon ya da bir dış NuGet sunucusu olup olmadığını belirtir.
Seçenekler: internal , external .
Ne zaman gerekir command == Push
publishVstsFeed
Hedef akış
Bu hesapta barındırılan bir akış seçin. burada bir akış seçmek için Azure Artifacts yüklü ve lisanslı bir lisansa sahip olmanız gerekir.
packagesToPush
Paket konumu
Nupkg dosyalarının eşleşmesi veya yolu.
Örnek: ' $ (Build. ArtifactStagingDirectory)/*. nupkg '.
Ne zaman gerekir command == Push
publishPackageMetadata
İşlem hattı meta verilerini yayımlama
Sürekli olarak bir paket kümesi yayımladıysanız ve yalnızca değiştirilen paketlerin alt kümesinin sürüm numarasını değiştirirseniz, bu seçeneği kullanın.
allowPackageConflicts Bazı paketleriniz 409 çakışma hatalarıyla reddedilse bile, görevin başarılı bir şekilde raporlanmasının mümkün olmasına izin verir.
NuGet.exe bir çakışma ile karşılaşırsa, görev başarısız olur. Bu seçenek çalışmaz ve bir ara ortamda çalışıyorsanı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ırarak bir desen 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. Seçeneğini belirlerseniz, Use the date and time Bu, X, Y ve Z 'yi seçtiğiniz yerde biçimlendirilen bir Use the date and time sürüm oluşturur X.Y.Z-ci-datetime .
Use an environment variable' I seçerseniz, bir ortam değişkeni seçmeniz ve kullanmak istediğiniz sürüm numarasını içerdiğinden emin olmanız gerekir.
Seçeneğini belirlerseniz Use the build number , bu, paketinizin sürümü için yapı numarasını kullanır.
Note:Ad özelliğini kullanarak yapı numarası biçimini aşağıdaki şekilde ayarlayabilirsiniz:
ad: $ (BuildDefinitionName) _ $ (Tarih: yyyyMMdd) $ (Rev:. RR).
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ırken, 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 sonraki bir hizmet kullanılırsa, bu kuruluş/koleksiyonda Project Koleksiyon 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.

Sürüm oluşturma düzenleri

byPrereleaseNumberiçin, sürüm ana, küçük ve düzeltme eki için seçtiğiniz sürüme ek olarak biçiminde tarih ve saat olarak ayarlanır.

byEnvVariçin sürüm, versionEnvVar parametresi tarafından belirtilen adı (hayır, yalnızca ortam değişkeni adı) olan ortam değişkeninin değerine ayarlanır. Ortam değişkeninin düzgün bir SemVer (veya gibi) olarak ayarlanmış olduğundan emin 1.2.31.2.3-beta1 olun.

byBuildNumberiçin, sürüm işlem hattı çalıştırmanın derleme numarası kullanılarak ayarlanır. Bu, işlem hattının özelliği için belirtilen name ve ortam değişkenine kaydedilen BUILD_BUILDNUMBER değerdir). Kullanılan derleme numarasının düzgün bir SemVer içerdiğini (ör. ) olduğundan emin 1.0.$(Rev:r) olma. byBuildNumber kullanırken,görev derleme numarası dizesinde noktalı sürümü ayıklar ve yalnızca bu bölümü kullanır. Dizenin geri kalanı bırakılır. Derleme numarasını olduğu gibi kullanmak için yukarıda açıklandığı gibi byEnvVar kullanabilir ve versionEnvVar'ı olarak ayarlayın.

Örnekler

Geri Yükleme

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

# 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 NuGet bir paket oluşturun.

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

Gönder

Not

İşlem hattı yapıtları dizine System.ArtifactsDirectory indirilir. packagesToPush değeri, yayın işlem $(System.ArtifactsDirectory)/**/*.nupkg hattında olarak ayarlanmış olabilir.

  • Paketi uygulama uygulamanız içinde tanımlanan bir akışa NuGet.config.

    # Push a project
    - task: NuGetCommand@2
      inputs:
        command: 'push'
        packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg'
        feedsToUse: 'config'
        nugetConfigPath: '$(Build.WorkingDirectory)/NuGet.config'
    
  • Kapsamlı bir projeye paket itme/yayımlama

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

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

Özel

Varsayılan komutlardan NuGet diğer tüm komutlarını çalıştırın: pack, push ve restore.

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

Açık kaynak

üzerinde Azure Pipelines Team Foundation Server görevlere göz GitHub. Geri bildirim ve katkılar açıktır.

SSS

Neden bir NuGet.Config?

Bir NuGet.Config denetimine denetim, projenizi ve paketlerinin konumunu oluşturmak için gereken önemli bir bilgi parçasının kodunuzu kontrol eden her geliştirici tarafından kullanılabilir olması sağlar.

Ancak, bir geliştirici ekibinin çok çeşitli projelerde çalıştığını durumlarda, her geliştiricinin makinesine genel Azure Artifacts akışına NuGet.Config akışı eklemek de mümkündür. Bu gibi durumlarda, görevdeki "Burada seçerim akışlar" seçeneğini NuGet bu yapılandırmayı çoğaltır.

Bu konuda nereden Azure Artifacts?

Azure Artifacts Belgeleri

Bu konuda nereden daha fazla bilgi NuGet?

NuGet Belgelerine Genel Bakış

NuGet Oluşturma ve yayımlama

NuGet bağımlılıkları almak için çözüm ayarlamayı kullanın

Başka ne tür uygulamalar derlerim?

Uygulama örneklerinizi derleme ve dağıtma

Başka ne tür derleme görevleri kullanılabilir?

Derleme ve sürüm görevleri kataloğu

Kod tabanımızı derleme sonlarından nasıl koruyabiliriz?

Nasıl yaparım? işlem hattımda diğer bölümleri mi değiştirtsin?

Paralel çoklu yapılandırmayı seçtim ama aynı anda yalnızca bir derleme çalışıyor.

Daha fazla paralel Azure Pipelines ihtiyacınız olabilir. Bkz. içinde paralel Azure Pipelines.

Nasıl yaparım? işlem hattımda neler değişti?

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

Bir aracıya ihtiyacım var mı?

Derlemenizi veya yayınını çalıştırmak için en az bir aracı gerekir.

Sorunlarımız var. Bunları nasıl gidererim?

Bkz. Derleme ve Sürüm Sorunlarını Giderme.

Varsayılan aracı havuzunu seçe değilim ve derlememi veya sürümümi kuyruğa ala bilmiyorum. Nasıl yaparım? düzeltebilir misiniz?

Bkz. Aracı havuzları.

My NuGet görev şu hatayla başarısız oluyor: "Hata: yerel sertifikayı verdiremiyor". Bunu nasıl düzeltebilirim?

Bu, güvenilen bir kök sertifika ekerek düzeltilmiştir. Ortam değişkenini derleme NODE_EXTRA_CA_CERTS=file aracınıza ekleyebilir veya görev değişkenini işlem NODE.EXTRA.CA.CERTS=file hattınıza ebilirsiniz. Bu Node.js hakkında daha fazla bilgi için bkz.Node.js belgeleri. İşlem hattınıza değişken ayarlama hakkında yönergeler için bkz. İşlem hattında değişken ayarlama.

Şirket içi TFS'yi kullanıyor ve bu özelliklerden bazılarını göremiyorum. Neden olmasın?

Bu özelliklerden bazıları yalnızca şirket Azure Pipelines şirket içinde kullanılamaz. TFS'nin en son sürümüne yükseltme yaptıysanız bazı özellikler şirket içinde kullanılabilir.

İşlem Hattım'ın farklı bir projede yer alan 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.