.NET Core CLI görevi

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

Not

Kimlik NuGet Doğrulama görevi, Azure Artifacts ve diğer depolama depoları ile kimlik doğrulaması NuGet yolu. Bu görevin geri yükleme ve anında yükleme komutları artık yeni özellikler almaz ve yalnızca kritik hatalar giderildi.

Azure Pipelines

Dotnet uygulaması derlemek, test etmek, paketle veya yayımlamak ya da özel bir dotnet komutu çalıştırmak için bu görevi kullanın. Paket komutları için bu görev NuGet.org ve Paket Yönetimi ve MyGet gibi Paket Yönetimi akışları destekler.

.NET Core veya .NET Standard derlemeniz NuGet paketlerine bağlı ise, bu adımın iki kopyasını ekleyin: biri komutuyla, biri restorebuild komutuyla.

Not

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

YAML kod parçacığı

# .NET Core
# Build, test, package, or publish a dotnet application, or run a custom dotnet command
- task: DotNetCoreCLI@2
  inputs:
    #command: 'build' # Options: build, push, pack, publish, restore, run, test, custom
    #publishWebProjects: true # Required when command == Publish
    #projects: # Optional
    #custom: # Required when command == Custom
    #arguments: # Optional
    #publishTestResults: true # Optional
    #testRunTitle: # Optional
    #zipAfterPublish: true # Optional
    #modifyOutputPath: true # Optional
    #feedsToUse: 'select' # Options: select, config
    #vstsFeed: # Required when feedsToUse == Select
    #feedRestore: # Required when command == restore. projectName/feedName for project-scoped feed. FeedName only for organization-scoped feed.
    #includeNuGetOrg: true # Required when feedsToUse == Select
    #nugetConfigPath: # Required when feedsToUse == Config
    #externalFeedCredentials: # Optional
    #noCache: false
    restoreDirectory:
    #restoreArguments: # Optional
    #verbosityRestore: 'Detailed' # Options: -, quiet, minimal, normal, detailed, diagnostic
    #packagesToPush: '$(Build.ArtifactStagingDirectory)/*.nupkg' # Required when command == Push
    #nuGetFeedType: 'internal' # Required when command == Push# Options: internal, external
    #publishVstsFeed: # Required when command == Push && NuGetFeedType == Internal
    #publishPackageMetadata: true # Optional
    #publishFeedCredentials: # Required when command == Push && NuGetFeedType == External
    #packagesToPack: '**/*.csproj' # Required when command == Pack
    #packDirectory: '$(Build.ArtifactStagingDirectory)' # Optional
    #nobuild: false # Optional
    #includesymbols: false # Optional
    #includesource: false # Optional
    #versioningScheme: 'off' # Options: off, byPrereleaseNumber, byEnvVar, byBuildNumber
    #versionEnvVar: # Required when versioningScheme == byEnvVar
    #majorVersion: '1' # Required when versioningScheme == ByPrereleaseNumber
    #minorVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #patchVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
    #buildProperties: # Optional
    #verbosityPack: 'Detailed' # Options: -, quiet, minimal, normal, detailed, diagnostic
    workingDirectory:

Bağımsız değişkenler

Görev denetimi seçenekleri

Bağımsız DeğişkenDescription
command
Komut
Çalıştıracak dotnet komutu. Bağımsız custom değişkenler eklemek için seçin veya burada listelenmiyor bir komut kullanın.
Seçenekler: buildpush , , , , pack , , publish , restoreruntest , custom
selectOrConfig
Kullanmak için akışlar
Burada Azure Artifacts ve/veya NuGet.org adresinden bir akış seçebilir veya NuGet.config dosyasını kaynak kod deponıza işleyecek ve bağımsız değişkenini kullanarak yolunu nugetConfigPath ayarlayabilirsiniz.
Seçenekler: select , config
Bağımsız değişken diğer adları: feedsToUse
versioningScheme
Otomatik paket sürümü
Başvurulan dahil projeleri ile kullanılamaz. 'Tarihi ve saati kullan'ı seçerseniz, X, Y ve Z'yi seçtiğiniz yerde SemVeruyumlu bir sürüm oluşturulur.

'Ortam değişkeni kullan'ı seçerseniz, bir ortam değişkeni seçmeniz ve kullanmak istediğiniz sürüm numarasını içerdiğiden emin olun.

'Derleme numarasını kullan'ı seçerseniz, paketinizin sürümünü oluşturmak için derleme numarasını kullanır. Not: Seçenekler altında derleme numarası biçimini '$(BuildDefinitionName)_$(Year:yyyy).$(Month).$(DayOfMonth)$(Rev:.r)' olarak ayarlayın
Seçenekler: off , , , byPrereleaseNumberbyEnvVarbyBuildNumber ,

arguments
Bağımsız değişkenler
Seçilen komutun bağımsız değişkenleri. Örneğin, derleme yapılandırması, çıkış klasörü, çalışma zamanı. Bağımsız değişkenler seçilen komuta bağlıdır
Not: Bu giriş şu anda yalnızca build , için bağımsız değişkenleri kabul publishruntestcustom eder. Listede yer alan bir komut için bağımsız değişkenler eklemek için custom kullanın.
projects
Projelerin yolu
Kullanmak üzere csproj dosyasının yolu. Joker karakterler kullanabilirsiniz (örneğin, tüm alt klasörlerde **/*.csproj tüm .csproj dosyaları için), bkz. **/*.csproj
noCache
Yerel önbelleği devre dışı bırakma
Uygulamanın NuGet makine önbelleklerinden paketleri kullanmasını önler.
restoreArguments
Bağımsız değişkenleri geri yükleme
Komutuna geçirilen ek bağımsız değişkenleri restore yazın.
packagesDirectory
Hedef dizin
Paketlerin yüklü olduğu klasörü belirtir. Klasör belirtilmezse, paketler varsayılan paket önbelleğine NuGet geri yüklenir
Bağımsız değişken diğer adları: restoreDirectory
buildProperties
Ek derleme özellikleri
.nuspec dosyasındaki her bir $token$ oluşumunun verilen değerle değiştirilene noktalı virgülle ayrılmış bir çift token = value listesi belirtir. Değerler, tırnak işaretleri içinde dizeler olabilir
verbosityPack
Ayrıntı Düzeyi
Komutun çıktıda görüntülenen ayrıntı miktarını pack belirtir.
verbosityRestore
Ayrıntı Düzeyi
Komutun çıktıda görüntülenen ayrıntı miktarını restore belirtir.
workingDirectory
Çalışma Dizini
Betiğin çalıştır olduğu geçerli çalışma dizini. Boş, $(System.DefaultWorkingDirectory) olan deposun (derleme) veya yapıtların (sürüm) kökü
searchPatternPush
Yayımlayacak NuGet paketlerin yolu
Karşıya yüklenecek nupkg dosyalarının eşleşme düzeni veya yolu. Birden çok desen noktalı virgülle ayrılabilir ve ile önek olarak negatif desen ! oluşturabilirsiniz. Örnek:
Bağımsız değişken diğer adları: packagesToPush
nuGetFeedType
Hedef akış konumu
Hedef akışın iç mi yoksa dış akış mı olduğunu belirtir.
Seçenekler: internal , external
feedPublish
Hedef akış
Kuruluşta barındırılan bir akış seçin. Burada bir Paket Yönetimi seçmek için yüklü ve lisanslı bir kullanıcınız olması gerekir
Bağımsız değişken diğer adları: publishVstsFeed
publishPackageMetadata
İşlem hattı meta verilerini yayımlama
Bu derleme/yayın işlem hattının meta verilerini (çalıştırma kimliği, kaynak kodu bilgileri) paketle ilişkilendirme
externalEndpoint
NuGet sunucusu
Dış NuGet sunucu kimlik bilgilerini içeren NuGet hizmet bağlantısı.
Bağımsız değişken diğer adları: publishFeedCredentials
searchPatternPack
Pakete yönelik csproj veya nuspec dosyasının yolu
Paketi yapılacak csproj veya nuspec dosyalarını aramak için desen. Noktalı virgülle birden çok deseni ayırarak desen ön ekini ile negatif ! oluşturabilirsiniz. Örnek:
Bağımsız değişken diğer adları: packagesToPack
configurationToPack
Pakete Yapılandırma
Bir csproj dosyası kullanırken, bu paket yapılandırması belirtir.
Bağımsız değişken diğer adları: configuration
outputDir
Paket Klasörü
Paketlerin oluşturulacak klasörü. Boşsa, paketler csproj dosyasıyla birlikte oluşturulur.
Bağımsız değişken diğer adları: packDirectory
nobuild
Derleme
Paketlemeden önce projeyi derleme. --no-build'build' komutunun parametresine karşılık gelen.
includesymbols
Sembolleri Dahil Etmek
Buna ek olarak, NuGet oluşturur. Komut satırı --include-symbols parametresine karşılık gelen.
includesource
Kaynağı Dahil Etmek
Pakete kaynak kodu içerir. Komut satırı --include-source parametresine karşılık gelen.
publishWebProjects
Web Projelerini Yayımlama
ise, özellik değeri atlanır ve görev depoda web projelerini bulmaya ve üzerinde trueprojects yayımlama komutunu çalıştırmaya dener. Web projeleri, dizinde bir web.config veya wwwroot klasörü bulunarak tanımlanır. web.config veya wwwroot klasörü yoksa, Microsoft .NET.Sdk.Web gibi bir web SDK'sı kullanan projeler seçilir. Belirtilmezse, bu bağımsız değişkenin true varsayılan olarak olduğunu unutmayın.
zipAfterPublish
Yayımlanan Zip Projeleri
yayımlama true komutu tarafından oluşturulan klasörü sıkıştırılır ve silinir.
modifyOutputPath
Yayımlama yolu için proje adı ekleme
ise, yayımlama komutu tarafından oluşturulan klasörlerin, çıkış yolu bağımsız değişkenlerde açıkça belirtildiklerinde klasör adlarına proje dosya true adı ön eki ekli olur. Bu, aynı klasörde birden çok proje yayımlamak istediğinizde kullanışlıdır.
publishTestResults
Test sonuçlarını yayımlama
Bu seçeneğin etkinleştirilmesi, içinde bir test sonuçları TRX dosyası oluşturulur $(Agent.TempDirectory) ve sonuçlar sunucuda yayımlanır.
Bu seçenek, --logger trx --results-directory $(Agent.TempDirectory) komut satırı bağımsız değişkenlerine eklenir.
Kod kapsamı, komut satırı bağımsız --collect "Code coverage" değişkenlerine ek olarak toplanabilir. Bu, şu anda yalnızca Windows kullanılabilir.
testRunTitle
Test çalıştırması başlığı
Test çalıştırması için bir ad sağlar
custom
Özel komut
Yürütme için dotnet.exe komutu.
Kullanılabilir komutların tam listesi için dotnet CLI belgelerine bakın
feedRestore
Bu Azure Artifacts/TFS akışından paketleri kullanma
Seçilen akışı oluşturulan akışa NuGet.config. Burada bir Paket Yönetimi seçmek için yüklü ve lisanslı bir kullanıcınız olması gerekir. proje kapsamlı akış için projectName/feedName. Yalnızca kuruluş kapsamlı akış için FeedName. Bunun test komutu için destek olmadığını unutmayın.
Bağımsız değişken diğer adları: vstsFeed
includeNuGetOrg
NuGet.org adresinden paketleri kullanma
Oluşturulan NuGet.config000 0 NuGet.org'a ekleyin.
nugetConfigPath
NuGet.config yolu
UygulamaNuGet.config paketlerin geri yüklensin akışlarını belirten depoda yer almaktadır.
externalEndpoints
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 kuruluş/koleksiyonda akışlar için bunu boş bırakın; Derlemenin kimlik bilgileri otomatik olarak kullanılır
Bağımsız değişken diğer adları: externalFeedCredentials
versionEnvVar
Ortam değişkeni
Değişken adını $, $env veya % olmadan girin
requestedMajorVersion
Ana
X.Y.Zsürümündeki 'X' .
Bağımsız değişken diğer adları: majorVersion
requestedMinorVersion
İkincil
X.Y.Zsürümündeki 'Y' .
Bağımsız değişken diğer adları: minorVersion
requestedPatchVersion
Patch
X.Y.Zsürümündeki 'Z' .
Bağımsız değişken diğer adları: patchVersion

Örnekler

Derleme

Proje oluşturma

# Build project
- task: DotNetCoreCLI@2
  inputs:
    command: 'build'

Birden Çok Proje Derleme

# Build multiple projects
- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: |
      src/proj1/proj1.csproj 
      src/proj2/proj2.csproj 
      src/other/other.sln    # Pass a solution instead of a csproj.

Gönder

İç NuGet paketlerini anından itme

# Push non test NuGet packages from a build to internal organization Feed
- task: DotNetCoreCLI@2
  inputs:
    command: 'push'
    searchPatternPush: '$(Build.ArtifactStagingDirectory)/*.nupkg;!$(Build.ArtifactStagingDirectory)/*.Tests.nupkg'
    feedPublish: 'FabrikamFeed'

Dış NuGet paketlerini anından dışa doğru itme

# Push all NuGet packages from a build to external Feed
- task: DotNetCoreCLI@2
  inputs:
    command: 'push'
    nugetFeedType: 'external'
    externalEndPoint: 'MyNuGetServiceConnection'

Paketi

NuGetPackage'i belirli bir çıkış dizinine paketleme

# Pack a NuGet package to a test directory
- task: DotNetCoreCLI@2
  inputs: 
    command: 'pack'
    outputDir: '$(Build.ArtifactStagingDirectory)/TestDir'

Sembol Paketi Paketleme

# Pack a symbol package along with NuGet package
- task: DotNetCoreCLI@2
  inputs: 
    command: 'pack'
    includesymbols: true

Yayımlama

Projeleri belirtilen klasöre yayımlama

# Publish projects to specified folder.
- task: DotNetCoreCLI@2
  displayName: 'dotnet publish'
  inputs:
    command: 'publish'
    publishWebProjects: false
    projects: '**/*.csproj'
    arguments: '-o $(Build.ArtifactStagingDirectory)/Output'
    zipAfterPublish: true
    modifyOutputPath: true

Geri Yükleme

#Restore packages with the .NET Core CLI task
- task: DotNetCoreCLI@2
  displayName: 'dotnet restore'
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    feedRestore: 'projectName/feedName'
    projects: '**/*.csproj'
    includeNuGetOrg: true

Test etme

Depoda testleri çalıştırma

# Run tests and auto publish test results.
- task: DotNetCoreCLI@2
  inputs:
    command: 'test'

SSS

Derleme, yayımlama veya test adımım paketleri geri yükleyememe neden başarısız oluyor?

, dotnet ve gibi buildpublish komutların çoğu örtülü bir adım testrestore içerir. Önceki adım, kullandığı kimlik bilgilerini temizlemiş olduğundan, önceki adımda başarılı bir şekilde çalışmanız bile kimliği doğrulanmış akışlarda dotnet restore başarısız olur.

Bu sorunu düzeltmek için Bağımsız --no-restore Değişkenler metin kutusuna bayrağını ekleyin.

Buna ek olarak, komut veya bağımsız değişkenlerini ve bu şekilde belirtilen akışları tanımaz, örtülü adım NuGet.config oluşturulan testfeedRestorevstsFeed dosyaya restore dahil olmaz. Paketleri geri yüklemek için açık dotnet restore bir adımın kullanılması önerilir. komutu restore ve bağımsız feedRestorevstsFeed değişkenlerini saygıyla karşılar.

Neden bir NuGet.config?

Bir NuGet.config denetimine denetim, projenizi oluşturmak için gereken önemli bir bilgi parçasının, paketlerin konumu olan 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 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.

Sorun giderme

Çıktı dosyaları için dosya yapısı önceki derlemelerden farklıdır

Azure DevOps barındırılan aracılar .NET Core 3.0, 2.1 ve 2.2 ile yapılandırılır. .NET Core 3.0 için CLI, çıkış klasörü bağımsız değişken kullanarak projeleri yayımlarken farklı bir davranışa sahip. Projeleri çıkış klasörü bağımsız değişkeni (-o) ile yayımlarken, çıkış klasörü proje dosyasının dizininde değil kök dizinde oluşturulur. Bu nedenle birden fazla proje yayımlanırken tüm dosyalar aynı dizinde yayımlanır ve bu da soruna neden olur.

Bu sorunu çözmek için Add project name to publish path parametresini (YAML'de modifyOutputPath) .NET Core CLI kullanın. Bu, çıkış klasörünün içinde proje dosyasının adıyla bir alt klasör oluşturur. Bu nedenle tüm projeleriniz ana çıkış klasörünün içindeki farklı alt klasörler altında yayımlanır.

steps:
- task: DotNetCoreCLI@2
  displayName: 'dotnet publish'
  inputs:
    command: publish
    publishWebProjects: false
    projects: '**/*.csproj'
    arguments: '-o testpath'
    zipAfterPublish: false
    modifyOutputPath: true

Project kullanan Entity Framework Barındırılan Aracılar üzerinde çalışmayı durdurdu

En son .NET Core: 3.0'da yerleşik Entity Framework (EF) yok. Yürütmeye başlamadan önce EF'yi yüklemeniz veya gerekli sürümle birlikte projeye global.json .NET Core SDK gerekir. Bu, EF projesi derlemek için doğru SDK'nın kullanılır. Gerekli sürüm makinede yoksa, gerekli sürümü yüklemek için işlem hattınıza UseDotNetV2 görevini ekleyin. .NET Core 3.0 ile EF hakkında daha fazla bilgi

Açık Kaynak

Bu görev, üzerinde açık kaynak GitHub. Geri bildirim ve katkılar açıktır.