.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 uç 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
| Bağımsız Değişken | Description |
|---|---|
commandKomut | Ç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 |
selectOrConfigKullanmak 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 , configBağımsız değişken diğer adları: feedsToUse |
versioningSchemeOtomatik 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 |
argumentsBağı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. |
projectsProjelerin 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 |
noCacheYerel önbelleği devre dışı bırakma | Uygulamanın NuGet makine önbelleklerinden paketleri kullanmasını önler. |
restoreArgumentsBağımsız değişkenleri geri yükleme | Komutuna geçirilen ek bağımsız değişkenleri restore yazın. |
packagesDirectoryHedef 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 |
buildPropertiesEk 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 |
verbosityPackAyrıntı Düzeyi | Komutun çıktıda görüntülenen ayrıntı miktarını pack belirtir. |
verbosityRestoreAyrı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ü |
searchPatternPushYayı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 |
nuGetFeedTypeHedef akış konumu | Hedef akışın iç mi yoksa dış akış mı olduğunu belirtir. Seçenekler: internal , external |
feedPublishHedef 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 |
externalEndpointNuGet sunucusu | Dış NuGet sunucu kimlik bilgilerini içeren NuGet hizmet bağlantısı. Bağımsız değişken diğer adları: publishFeedCredentials |
searchPatternPackPakete 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 |
configurationToPackPakete Yapılandırma | Bir csproj dosyası kullanırken, bu paket yapılandırması belirtir. Bağımsız değişken diğer adları: configuration |
outputDirPaket 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 |
nobuildDerleme | Paketlemeden önce projeyi derleme. --no-build'build' komutunun parametresine karşılık gelen. |
includesymbolsSembolleri Dahil Etmek | Buna ek olarak, NuGet oluşturur. Komut satırı --include-symbols parametresine karşılık gelen. |
includesourceKaynağı Dahil Etmek | Pakete kaynak kodu içerir. Komut satırı --include-source parametresine karşılık gelen. |
publishWebProjectsWeb 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. |
zipAfterPublishYayımlanan Zip Projeleri | yayımlama true komutu tarafından oluşturulan klasörü sıkıştırılır ve silinir. |
modifyOutputPathYayı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. |
publishTestResultsTest 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. |
testRunTitleTest ç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 |
feedRestoreBu 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 |
includeNuGetOrgNuGet.org adresinden paketleri kullanma | Oluşturulan NuGet.config000 0 NuGet.org'a ekleyin. |
nugetConfigPathNuGet.config yolu | UygulamaNuGet.config paketlerin geri yüklensin akışlarını belirten depoda yer almaktadır. |
externalEndpointsBu 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 |
versionEnvVarOrtam değişkeni | Değişken adını $, $env veya % olmadan girin |
requestedMajorVersionAna | 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 |
requestedPatchVersionPatch | 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.