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 |
|---|---|
commandKomut |
ç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. |
feedsToUseKullanı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 . |
vstsFeedbu 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. |
includeNuGetOrgNuGet. org 'daki paketleri kullanma |
NuGet. org öğesini oluşturulan NuGet.config ekleyin. Varsayılan değer true .Ne zaman gereklidir feedsToUse == Select . |
nugetConfigPathNuGet.config yolu |
Depodaki paketlerin geri yükleneceği akışları belirten NuGet.config. Ne zaman gerekir feedsToUse == Config |
externalFeedCredentialsBu 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. |
noCacheYerel önbelleği devre dışı bırak |
NuGet, yerel makine önbelleklerinden paket kullanmasını engeller. |
disableParallelProcessingParalel işlemeyi devre dışı bırak |
NuGet paralel olarak birden çok paket yüklemesini engeller. |
restoreDirectoryHedef 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. |
verbosityRestoreAyrıntı Düzeyi |
Çıktıda görünen ayrıntı miktarını belirtir. Seçenekler: Quiet , Normal , Detailed |
nuGetFeedTypeHedef 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 |
publishVstsFeedHedef 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. |
packagesToPushPaket 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. |
publishFeedCredentialsNuGet sunucusu |
dış NuGet sunucusunun kimlik bilgilerini içeren NuGet hizmet bağlantısı. |
verbosityPushAyrıntı Düzeyi |
Çıktıda görünen ayrıntı miktarını belirtir. Seçenekler: Quiet , Normal , Detailed |
packagesToPackPaketle 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 |
configurationPaketteki yapılandırma |
Csproj dosyası kullanırken paketin yapılandırmasını belirtir. |
packDestinationPaket klasörü |
Paketlerin oluşturulacağı klasör. Boşsa, paketler kaynak kökte oluşturulur. |
versioningSchemeOtomatik 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 |
includeReferencedProjectsOrtam değişkeni |
Değişken adını $, $env veya% olmadan girin. |
majorVersionAna |
X. Y. Z sürümündeki ' x ' |
minorVersionİkincil |
X. Y. Z sürümündeki ' Y ' |
patchVersionPatch |
X. Y. Z sürümündeki ' Z ' |
packTimezoneSaat 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 |
includeSymbolsSembol 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. |
toolPackageAraç Paketi |
Projenin çıkış dosyalarının araç klasöründe olup olmadığını belirler. |
buildPropertiesEk 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. |
basePathTemel yol |
Nuspec dosyasında tanımlanan dosyaların temel yolu. |
verbosityPackAyrıntı Düzeyi |
Çıktıda görüntülenen ayrıntı miktarını belirtir. Seçenekler: Quiet , Normal , Detailed |
argumentsKomut 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?
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?
Git: Bir dala birleştirimeden önce kodun derlemelerini gerektirme seçeneğiyle dal ilkeleriyle kod kalitesini geliştirin. Daha GitHub için, dallar altında GitHub depo ayarlarında benzer ilkeler kullanılabilir.
Nasıl yaparım? işlem hattımda diğer bölümleri mi değiştirtsin?
Testleri, betikleri ve çok çeşitli diğer işlemleri çalıştırmak için görevleri derleme ve serbest bırakma.
Tamamlanan derlemelerin nasıl adlandırılmış olduğunu belirtme, birden çok yapılandırma oluşturma ve hata durumunda iş öğeleri oluşturma gibi derleme seçeneklerini belirtin.
Derlemenin kaynağını seçmek ve aracı çalışma alanının nasıl temizlenmeleri gibi seçenekleri değiştirmek için desteklenen kaynak depolar.
CI derlemelerinizi çalıştırma ve zamanlanmış derlemeleri belirtme için derleme tetikleyicilerini ayarlayın.
Eski derlemeleri otomatik olarak silmek için derleme saklama ilkelerini belirtin.
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.