.NET Core projeleri oluşturma, test etme ve dağıtma

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022

Bu makalede, .NET Core projeleriyle çalışmak için Azure Pipelines'ın nasıl kullanılacağı açıklanmaktadır. Makale, aşağıdaki görevlerde size yol gösterebilirsiniz:

  • Bir .NET Core web uygulaması oluşturun ve bir GitHub deposuna yükleyin.
  • Projeyi oluşturmak için bir Azure DevOps projesi ve bir Azure Pipelines işlem hattı oluşturun.
  • Şirket içinde barındırılan aracılarla derleme ortamınızı ayarlayın.
  • Bağımlılıkları geri yükleyin, projenizi oluşturun ve .NET Core (DotNetCoreCLI@2) görevi veya bir betik ile test edin.
  • İşlem hattınıza başka .NET SDK komutları eklemek için .NET Core (DotNetCoreCLI@2) görevini kullanın.
  • Kod kapsamı sonuçlarını yayımlamak için Kod Kapsamı Sonuçlarını Yayımla (Publish code coverage results v2) görevini kullanın.
  • Derleme çıkışınızı paketleyip işlem hattınıza, NuGet akışına, ZIP arşivine veya diğer hedeflere teslim edin.
  • Bir .NET Core web uygulaması oluşturun ve bir GitHub deposuna yükleyin.
  • Projeyi oluşturmak için bir Azure DevOps projesi ve bir Azure Pipelines işlem hattı oluşturun.
  • Microsoft tarafından barındırılan veya şirket içinde barındırılan aracılarla derleme ortamınızı ayarlayın.
  • Bağımlılıkları geri yükleyin, projenizi oluşturun ve .NET Core (DotNetCoreCLI@2) görevi veya bir betik ile test edin.
  • İşlem hattınıza başka .NET SDK komutları eklemek için .NET Core (DotNetCoreCLI@2) görevini kullanın.
  • Kod kapsamı sonuçlarını yayımlamak için Kod Kapsamı Sonuçlarını Yayımla (Publish code coverage results v2) görevini kullanın.
  • Derleme çıkışınızı paketleyip işlem hattınıza, NuGet akışına, ZIP arşivine veya diğer hedeflere teslim edin.

Note

.NET Framework projeleriyle çalışmak için bkz. .NET Framework ile ASP.NET uygulamaları derleme.

Önkoşullar

Bu makaledeki tüm yordamları tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:

  • Bir Azure DevOps kuruluşu. Ücretsiz bir tane oluşturabilirsiniz.
  • Azure DevOps projeleri oluşturabilmeniz ve işlem hatlarına proje erişimi verebilmeniz için kuruluş Proje Yöneticileri grubu üyeliği. Azure DevOps kuruluş sahipleri bu üyeliğe otomatik olarak sahip olur.
  • Kuruluştaki bir Azure DevOps projesi. Azure DevOps'ta proje oluşturma.
  • Paralel işlerin ücretsiz katmanını isteyerek Microsoft tarafından barındırılan aracılarda işlem hatlarını çalıştırma olanağı. Bu isteğin işlenmesi birkaç iş günü sürebilir. Daha fazla bilgi için bkz. Paralel işlerin yapılandırılması ve ödenmesi.
  • Proje Yöneticisi olarak atayabileceğiniz hizmet bağlantıları için Yönetici veya Oluşturucu rolü.
  • GitHub hesabı ve deposu.

Bu makaledeki tüm yordamları tamamlamak için aşağıdaki önkoşullara ihtiyacınız vardır:

  • Azure DevOps koleksiyonu.
  • Kuruluşta oluşturulan bir Azure DevOps projesi. Yönergeler için bkz. Azure DevOps'ta proje oluşturma.
  • Azure DevOps projeleri oluşturabilmeniz ve işlem hatlarına proje erişimi verebilmeniz için Proje Yöneticileri grubu üyeliği. Azure DevOps Kuruluş sahipleri bu üyeliğe otomatik olarak sahip olur.
  • Proje Yöneticisi olarak atayabileceğiniz hizmet bağlantıları için Yönetici veya Oluşturucu rolü.
  • GitHub hesabı ve deposu.

.NET projesi oluşturma ve GitHub'a yükleme

GitHub deponuzda zaten bulunan bir .NET projesi kullanmak istiyorsanız, bu bölümü atlayabilirsiniz.

Üzerinde çalışabileceğiniz bir .NET projeniz yoksa, yerel makinenizde aşağıdaki gibi yeni bir proje oluşturun:

  1. .NET 8.0 SDK'sını yükleyin veya yüklü olduğundan emin olun.
  2. Yerel makinenizde bir terminal penceresi açın.
  3. Bir proje dizini oluşturun ve bu dizine gidin.
  4. komutunu çalıştırarak dotnet new webapp -f net8.0yeni bir .NET 8 web uygulaması oluşturun.
  5. kullanarak dotnet runuygulamayı yerel olarak derleyin ve çalıştırın.
  6. Uygulama başlatıldığında kapatmak için Ctrl+C tuşlarına basın.
  7. Yerel projeyi GitHub deponuza yükleyin veya bağlayın.

Boru hattı oluştur

Kullanmak istediğiniz bir işlem hattı varsa bu bölümü atlayabilirsiniz. Aksi takdirde, işlem hattı oluşturmak için YAML işlem hattı düzenleyicisini veya klasik düzenleyiciyi kullanabilirsiniz.

  1. Azure DevOps projenizde sol gezinti menüsünden İşlem Hatları'nı seçin.

  2. Bu işlem hattı projenin ilk işlem hattıysa Yeni işlem hattı veya İşlem hattı oluştur'u seçin.

  3. Kodunuz nerede ekranında GitHub'ı seçin.

  4. Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.

  5. Depo seçin ekranında.NET uygulamanızın içinde olduğu depoyu seçin.

  6. Azure Pipelines uygulamasını yüklemek için GitHub'a yönlendirilebilirsiniz. Öyleyse Onayla ve yükle'yi seçin.

  1. Yapılandır sekmesinde Daha fazla göster'i seçin ve ardından listeden ASP.NET Core işlem hattı şablonunu seçin. Bu şablon, bu makalede açıklanan birçok adımı ve ayarı sağlar.

    Ayrıca Yapılandırsekmesinden Başlangıç işlem hattı'nı seçerek en az işlem hattıyla başlayabilir ve adımları ve ayarları kendiniz ekleyebilirsiniz.

  2. Gözden Geçir sekmesinde YAML kodunu inceleyin. Dosyayı gereksinimlerinize göre özelleştirebilirsiniz. Örneğin, farklı bir aracı havuzu belirtebilir veya farklı bir .NET SDK'sı yüklemek için bir görev ekleyebilirsiniz.

  1. Azure DevOps projenizde sol gezinti menüsünden İşlem Hatları'nı seçin.

  2. Bu işlem hattı projenin ilk işlem hattıysa Yeni işlem hattı veya İşlem hattı oluştur'u seçin.

  3. Kaynak depo türünüzü seçin. Bu örnek için GitHub Enterprise Server kullanın.

  4. Sonraki ekranda aşağıdaki bilgileri girin:

    • GitHub hesabınızın URL'si, örneğin https://github.com/myname.
    • GitHub kişisel erişim belirteciniz (PAT).
    • Bir hizmet bağlantı adı, örneğin my-github.
  5. Oluştur'u belirleyin.

  6. GitHub deponuzu seçin.

  7. Yapılandır sekmesinde Daha fazla göster'i seçin ve listeden ASP.NET Core işlem hattı şablonunu seçin. Bu şablon, bu makalede açıklanan birçok adımı ve ayarı sağlar.

  8. Yeni YAML işlem hattı kodunu inceleyin. YAML dosyasını gereksinimlerinize göre özelleştirebilirsiniz. Örneğin, farklı bir .NET SDK'sı yüklemek veya projenizi test edip yayımlamak için bir görev ekleyebilirsiniz.

  1. Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.

    Yeni bir YAML işlem hattında Kaydet ve çalıştır düğmesini gösteren ekran görüntüsü.

  2. İsteğe bağlı olarak İşleme iletisini düzenleyin ve kaydet ve yeniden çalıştır'ı seçin.

  3. Özet sekmesinde İşler bölümünde işi seçerek işlem hattınızın nasıl çalıştığını izleyin.

Artık özelleştirmeye hazır çalışan bir işlem hattınız var.

Derleme ortamınızı ayarlama

Azure Pipelines, .NET Core projenizi oluşturmak için şirket içinde barındırılan aracıları kullanır. .NET Core SDK'sını ve çalışma zamanını Windows, Linux, macOS veya Docker aracılarında kullanabilirsiniz. Aracılarda gerekli .NET Core SDK ve çalışma zamanı sürümünün yüklü olduğundan emin olun.

.NET SDK'sının belirli bir sürümünü yüklemek için, görevi bir YAML işlem hattı dosyasına veya klasik düzenleyicide UseDotNet@2 görevine ekleyin.

Note

Fiziksel sistemlerde çalışan aracılar için, sdk'ları ve araçları işlem hattınız aracılığıyla yüklemek, aracının konağındaki derleme ortamını değiştirir.

Aşağıdaki örnek YAML kod parçacığı .NET SDK 8.0.x'i yükler:

steps:
- task: UseDotNet@2
  inputs:
    version: '8.x'

Daha yeni bir SDK yüklemek için olarak performMultiLevelLookupayarlayıntrue.

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

Derleme işiniz için aracı havuzunu ve aracıyı seçebilirsiniz. Aracıları özelliklerine göre de belirtebilirsiniz. Örneğin, aşağıdaki YAML işlem hattı parçacığı bir havuz ve aracı özelliklerini seçer.

pool:
  name: myPrivateAgents
  demands:
  - agent.os -equals Darwin
  - anotherCapability -equals somethingElse

.NET Core projelerinizi Windows, Linux veya macOS için .NET Core SDK'sını ve çalışma zamanını kullanarak oluşturabilirsiniz. Derlemeleriniz varsayılan olarak Microsoft tarafından barındırılan aracılarda çalıştırıldığından altyapıyı ayarlamanız gerekmez.

Azure Pipelines Microsoft tarafından barındırılan aracılar, desteklenen .NET Core SDK'larının önceden yüklenmiş birkaç sürümünü içerir. Kullanılabilir görüntülerin ve yapılandırma örneklerinin tam listesi için bkz. Microsoft tarafından barındırılan aracılar .

Aşağıdaki YAML işlem hattı parçacığı, aracı havuzu için Ubuntu işletim sistemini ayarlar.

pool:
  vmImage: 'ubuntu-latest' 

Microsoft tarafından barındırılan aracılar .NET Core SDK'sının bazı eski sürümlerini içermez ve genellikle yayın öncesi sürümleri içermez. Microsoft tarafından barındırılan aracılarda SDK'nın bu sürümlerine ihtiyacınız varsa, DotNet (UseDotNet@2) kullanma görevini kullanarak bunları yükleyebilirsiniz.

Örneğin, aşağıdaki kod .NET 8.0.x SDK'sını yükler:

steps:
- task: UseDotNet@2
  inputs:
    version: '8.x'

Windows aracıları zaten bir .NET Core çalışma zamanı içerir. Daha yeni bir SDK yüklemek için aşağıdaki kod parçacığında olduğu gibi ayarlayın performMultiLevelLookuptrue :

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

Kendin barındırılan aracılar

Alternatif olarak, .NET Core projelerinizi oluşturmak için şirket içinde barındırılan aracıları kullanabilirsiniz. Linux, macOS veya Windows şirket içinde barındırılan aracıları ayarlayabilirsiniz.

Kendi kendine barındırılan aracıları kullanarak şunları yapabilirsiniz:

  • Araç yükleyicisini çalıştırma maliyetinden UseDotNet@2 kaçının.
  • Büyük bir deponuz varsa derleme süresini azaltın.
  • Artımlı derlemeleri çalıştırma.
  • Microsoft'un resmi olarak desteklemediği önizleme veya özel SDK'ları kullanın.
  • Yalnızca şirket veya şirket içi ortamlarınızda kullanılabilen SDK'ları kullanın.

Daha fazla bilgi için Kendi Sunucularınızda Barındırılan Etmenler bölümüne bakın.

Bağımlılıkları geri yükleme

NuGet paketleri, projenizin oluşturmadığınız koda bağımlı olması için bir yol sağlar. dotnet restore NuGet paketlerini ve projeye özgü araçları indirmek için komutunu çalıştırın. Bu komutu .NET Core (DotNetCoreCLI@2) görevi aracılığıyla veya işlem hattınızda betik olarak çalıştırabilirsiniz. komut, dotnet restore .NET Core SDK ile paketlenmiş NuGet.exe kullanır ve yalnızca .NET Core projesi *.csproj dosyalarında belirtilen paketleri geri yükleyebilir.

Azure Artifacts, NuGet.org veya başka bir kimliği doğrulanmış dış veya iç NuGet deposundan NuGet paketlerini indirip geri yüklemek için .NET Core (DotNetCoreCLI@2) görevini kullanın. NuGet akışı işlem hattınızla aynı projedeyse kimlik doğrulaması yapmanız gerekmez. Daha fazla bilgi için bkz . .NET Core görevi (DotNetCoreCLI@2).

Microsoft tarafından barındırılan aracıları kullandığınızda, her derlemeyi çalıştırdığınızda yeni bir makine alırsınız ve bu da paketleri her çalıştırmayla geri yükler. Geri yükleme önemli miktarda zaman alabilir. Bu sorunu azaltmak için Azure Artifacts'i veya şirket içinde barındırılan aracıyı kullanarak paket önbelleğinden yararlanın.

Aşağıdaki işlem hattı bir Azure Artifact akışını geri yüklemek için görevini kullanır DotNetCoreCLI@2 .

trigger:
- main

pool:
  vmImage: 'windows-latest'

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 8.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

variables:
  buildConfiguration: 'Release'

steps:
- task: DotNetCoreCLI@2
  inputs:
    command: 'restore'
    feedsToUse: 'select'
    vstsFeed: 'my-vsts-feed' # A series of numbers and letters

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    arguments: '--configuration $(buildConfiguration)'
  displayName: 'dotnet build $(buildConfiguration)'

gibi komutları çalıştırdığınızda .NET paketleri otomatik olarak dotnet buildgeri yükler. Kimliği doğrulanmış bir akış kullanıyorsanız paketleri geri yüklemek için .NET Core (DotNetCoreCLI@2) görevini kullanmanız gerekir.

Proje Ayarları> İşlem HatlarıHizmeti bağlantılarında NuGet hizmet bağlantısı oluşturarak kimliği doğrulanmış bir> kimlik bilgilerini yönetin. NuGet hizmet bağlantıları hakkında daha fazla bilgi için bkz. Azure Pipelines ile NuGet paketlerini yayımlama.

paketleri NuGet.org'dan geri yükleme

paketleri NuGet.org geri yüklemek için işlem hattınızı aşağıdaki gibi güncelleştirin.

YAML kodunu doğrudan düzenleyerek veya görev yardımcısını kullanarak işlem hattınıza geri yükleme komutunu ekleyebilirsiniz.

Derleme görevlerinizden önce aşağıdaki kod parçacığını azure-pipelines.yml dosyanıza ekleyerek DotNetCoreCLI@2 () görevini doğrudan ekleyin.

steps:
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: restore
    projects: '**/*.csproj'
    feedsToUse: select

Görev yardımcısını kullanmak için:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.
  2. Görev kataloğundan .NET Core'ı seçin.
  3. Yapılandırma ekranında, Komut açılan listesinden geri yükle'yi seçin.
  4. Proje veya çözüm yolu alanına *.csproj dosyalarınızın yolunu girin. Tüm alt klasörlerdeki tüm *.csproj dosyaları için **/*.csproj joker karakterlerini kullanabilirsiniz.
  5. Akışların eklenmesi için, burada seçtiğim Akışların ve NuGet.org paketlerini kullan'ın seçili olduğundan emin olun.
  6. Ekle'yi seçin.
  7. Doğrula ve kaydet'i ve ardından kaydet'i seçerek değişikliği işleyin.

Dış akıştan paketleri geri yükleme

Dış NuGet deposu belirtmek için URL'yi deponuzdaki NuGet.config dosyasına yerleştirin. NuGet.config dosyanızda herhangi bir özel akışın belirtildiğine ve kimlik bilgilerinin bir NuGet hizmet bağlantısında belirtildiğine emin olun.

Paketleri bir dış akıştan geri yüklemek için, görevi önceki bölümde açıklandığı gibi ekleyin restore , ancak yapılandırma ayarlarını aşağıdaki gibi değiştirin:

Derleme görevlerinizden önce aşağıdaki kod parçacığını azure-pipelines.yml dosyanıza ekleyerek DotNetCoreCLI@2 () görevini doğrudan ekleyin. değerini hizmet bağlantınızın adıyla değiştirin <NuGet service connection> .

steps:
- task: DotNetCoreCLI@2
  displayName: Restore
  inputs:
    command: restore
    projects: '**/*.csproj'
    feedsToUse: config
    nugetConfigPath: NuGet.config    # Relative to root of the repository
    externalFeedCredentials: <NuGet service connection>

Görev yardımcısını kullanmak için:

  1. .NET Core görevini ekleyin ve önceki yordamda olduğu gibi yapılandırma ekranında geri yükle'yi seçin.
  2. Eklenecek Akışlar içinNuGet.configakışlar'ı seçin.
  3. NuGet.configyolu altında, deponuzun köküne göre NuGet.config dosyanızın yolunu girin. Gözatmak ve konumu seçmek için alanın yanındaki üç noktayı ... seçebilirsiniz.
  4. Bu kuruluş/koleksiyon dışındaki akışlar için kimlik bilgileri'nin altında, seçili NuGet.config dosyasındaki dış kayıt defterleri için kullanılacak kimlik bilgilerini seçin. Aynı kuruluştaki akışlar için bu alanı boş bırakın. Derlemenin kimlik bilgileri otomatik olarak kullanılır.

.NET Framework projeleri için paketleri geri yükleme

Çözümünüz bir .NET Framework projesi içeriyorsa veya bağımlılıklarınızı belirtmek için package.json kullanıyorsanız, bu bağımlılıkları geri yüklemek için NuGetCommand@2 görevini kullanın.

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'select'

Note

Ubuntu 24.04 veya üzeri için.NET CLI ile NuGetCommand@2 görevi yerine NuGetAuthenticate görevini kullanmanız gerekir. Daha fazla bilgi için bkz. Ubuntu'da barındırılan yeni görüntüler için destek.

Projenizi oluşturma

komutunu çalıştırarak dotnet build .NET Core projenizi oluşturun. .NET Core (DotNetCoreCLI@2) görevini kullanarak veya komut satırı betiği olarak komutunu işlem hattınıza ekleyebilirsiniz.

.NET Core görevini kullanma

YAML işlem hattı düzenleyicisini kullanarak derleme görevi ekleyebilirsiniz. Dosyayı doğrudan düzenleyebilir veya görev yardımcısını kullanabilirsiniz.

Aşağıdaki kod parçacığını ekleyerek .NET Core (DotNetCoreCLI@2) görevini doğrudan ekleyin. öğesini arguments gereksinimlerinize uyacak şekilde güncelleştirin.

steps:
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

Görev yardımcısını kullanmak için:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.
  2. .NET Core (DotNetCoreCLI@2) görevini seçin.
  3. Komut açılan listesinden derleme'yi seçin.
  4. Proje veya çözüm yolu alanına *.csproj dosyalarınızın yolunu girin. Tüm alt klasörlerdeki tüm *.csproj dosyaları için **/*.csproj joker karakterlerini kullanabilirsiniz.
  5. Ekle'yi seçin.
  6. Değişikliği kaydetmek için Kaydet'i seçin.

Komut satırı betiği ile .NET Core oluşturma

Komut satırı betiği kullanarak da oluşturabilirsiniz.

YAML dosyasını doğrudan düzenleyerek derleme komut satırı eklemek için aşağıdaki kodu ekleyin:

steps:
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'

Komut satırı görevini eklemek için görev yardımcısını da kullanabilirsiniz.

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.
  2. Listeden Komut satırı (CmdLine@2) görevini seçin.
  3. Betik alanına parametresiyle dotnet build komutunu girin. Örneğin, dotnet build --configuration $(buildConfiguration).
  4. Gelişmiş>Çalışma Dizini'nin altında, *.csproj dosyasının yolunu çalışma dizini olarak girin. Boş bırakırsanız, çalışma dizini varsayılan olarak olur $(Build.SourcesDirectory).
  5. Ekle'yi seçin.
  6. Değişikliği kaydetmek için Kaydet'i seçin.

İşlem hattınıza diğer .NET SDK komutlarını ekleme

.NET Core () görevini kullanarak veya betik olarak işlem hattınıza diğer DotNetCoreCLI@2 SDK komutlarını ekleyebilirsiniz.

.NET Core göreviyle .NET CLI komutu ekleme

.NET Core (DotNetCoreCLI@2) görevi işlem hattınıza kolayca .NET CLI komutları eklemenize olanak tanır. YAML dosyanızı düzenleyerek veya klasik düzenleyiciyi kullanarak .NET Core (DotNetCoreCLI@2) görevleri ekleyebilirsiniz.

YAML işlem hattı düzenleyicisinde görev yardımcısını kullanarak bir .NET Core komutu eklemek için aşağıdaki adımları tamamlayın:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.
  2. Görev kataloğundan .NET Core'ı seçin.
  3. Komut alanındaki açılan listeden çalıştırmak istediğiniz komutu seçin.
  4. Gereken seçenekleri yapılandırın.
  5. Ekle'yi seçin.
  6. Değişikliği kaydetmek için Kaydet'i seçin.

Betikte .NET Core CLI komutu ekleme

script dosyanıza .NET Core CLI komutunu olarak ekleyin. Örneğin:


steps:
# ...
- script: dotnet test <test-project> 

Bir araç yükleyin

Windows üzerinde çalışan bir derlemeye dotnetsay gibi bir .NET Core genel aracı yüklemek için bir .NET Core görevi ekleyin ve yapılandırmada aşağıdaki özellikleri ayarlayın:

  • Komut: özel
  • Projelerin yolu: boş bırakın
  • Özel komut: tool
  • Argümanlar: install -g dotnetsay

Aracı çalıştırmak için bir Komut Satırı görevi ekleyin ve dotnetsay alanına girin.

Testlerinizi çalıştırma

Deponuz test projeleri içeriyorsa MSTest, xUnit ve NUnit gibi test çerçevelerini kullanarak birim testleri çalıştırmak için .NET Core (DotNetCoreCLI@2) görevini kullanın. Test projesi Microsoft.NET.Test.SDK sürüm 15.8.0 veya sonraki bir sürüme başvurmalıdır.

Hizmet, test sonuçlarını otomatik olarak yayımlar. Bunları derleme özetinde görebilirsiniz. Başarısız test sorunlarını gidermek ve test zamanlamasını analiz etmek için test sonuçlarını kullanın.

İşlem hattınıza bir test görevi eklemek için azure-pipelines.yml dosyanıza aşağıdaki kod parçacığını ekleyin:

steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

.NET Core (DotNetCoreCLI@2) görevini eklemek için görev yardımcısını kullanırsanız aşağıdaki özellikleri ayarlayın:

  • Komut: test
  • Projelerin yolu: Çözümünüzdeki test projelerine ayarlayın
  • Argümanlar: --configuration $(BuildConfiguration)

Alternatif olarak, dotnet test komutunu belirli bir günlükçü ile çalıştırın ve ardından PublishTestResults@2 görevini kullanın.

steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
  condition: succeededOrFailed()
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'

Kod kapsamını topla

Windows platformunda derleme yaparken, yerleşik kapsam veri toplayıcısını kullanarak kod kapsamı ölçümlerini toplayabilirsiniz. Test projesi Microsoft.NET.Test.SDK sürüm 15.8.0 veya sonraki bir sürüme başvurmalıdır.

Testleri çalıştırmak için .NET Core (DotNetCoreCLI@2) görevini kullandığınızda, işlem hattı kapsama verilerini otomatik olarak sunucuya yayımlar. Visual Studio'da görüntülemek için derleme özetinden *.coverage dosyasını indirebilirsiniz.

Kod kapsamını toplamak için, --collect "Code Coverage" işlem hattınıza test görevini eklerken bağımsız değişkenini ekleyin.

steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'

.NET Core (DotNetCoreCLI@2) görevini eklemek için görev yardımcısını kullanırsanız aşağıdaki özellikleri ayarlayın:

  • Komut: test
  • Projelerin yolu: Çözümünüzdeki test projelerine ayarlayın
  • Argümanlar: --configuration $(BuildConfiguration) --collect "Code Coverage"

Test sonuçlarını yayımla seçeneğinin seçili kaldığından emin olun.

Alternatif olarak, komutunu belirli bir günlükçü ile kullanarak dotnet test kod kapsamı sonuçlarını toplamak ve ardından PublishTestResults@2 görevini çalıştırmak için aşağıdaki kodu kullanın:

steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
  inputs:
    testRunner: VSTest
    testResultsFiles: '**/*.trx'

Coverlet ile kod kapsamı ölçümlerini toplama

Linux veya macOS üzerinde derlediyseniz kod kapsamı ölçümlerini toplamak için Coverlet'i veya benzer bir aracı kullanın.

Kod Kapsamı Sonuçlarını Yayımla (PublishCodeCoverageResults@2) göreviyle kod kapsamı sonuçlarını sunucuda yayımlayabilirsiniz. Sonuçları Cobertura veya JaCoCo kapsam biçiminde oluşturmak için kapsam aracını yapılandırmanız gerekir.

Coverlet ile testleri çalıştırmak ve kod kapsamını yayımlamak için:

  1. NuGet paketine coverlet.collector referans ekleyin.
  2. aşağıdaki kod parçacığını azure-pipelines.yml dosyanıza ekleyin. Ek DataCollectionRunSettings bağımsız değişkenleri eklemeyin çünkü XPlat Code Coverage toplayıcı zaten bir Cobertura raporu üretiyor.
- task: DotNetCoreCLI@2
  displayName: 'dotnet test'
  inputs:
    command: 'test'
    arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage"'
    publishTestResults: true
    projects: '<test project directory>'
  
- task: PublishCodeCoverageResults@2
  displayName: 'Publish code coverage report'
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'

Kodunuzu paketleyip teslim edin

Derleme çıkışınızı paketlemek ve teslim etmek için şunları yapabilirsiniz:

  • Derleme yapıtlarınızı Azure Pipelines'da yayımlayın.
  • Bir NuGet paketi oluşturun ve NuGet akışınızda yayımlayın.
  • NuGet paketinizi Azure Artifacts'de yayımlayın.
  • Bir web uygulamasına dağıtmak için bir ZIP arşivi oluşturun.
  • Azure Artifacts sembol sunucusuna veya dosya paylaşımına sembol yayımlama.

Ayrıca uygulamanız için bir görüntü oluşturabilir ve bunu bir kapsayıcı kayıt defterine gönderebilirsiniz.

Yapıtları Azure Pipelines'da yayımlama

.NET derlemenizin çıkışını işlem hattınızda yayımlamak için şu adımları izleyin:

  1. .NET CLI kullanarak komutunu çalıştırın dotnet publish --output $(Build.ArtifactStagingDirectory) veya yayımla komutuyla DotNetCoreCLI@2 () görevini ekleyin.
  2. Artifaktı yayımlamak için Publish Pipeline Artifact (PublishPipelineArtifact@1) görevini kullanın. Bu görev içindeki $(Build.ArtifactStagingDirectory) tüm dosyaları derlemenizin yapıtı olarak karşıya yükler.

azure-pipelines.yml dosyanıza aşağıdaki kodu ekleyin:

steps:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'myWebsite'

Yayımlamadan önce derleme dizinine daha fazla dosya kopyalamak için Dosyaları Kopyala (CopyFile@2) görevini kullanın.

Note

publishWebProjects .NET Core (DotNetCoreCLI@2) görevindeki giriş varsayılan olarak olarak ayarlanır true ve deponuzdaki tüm web projelerini yayımlar. Daha fazla bilgi için bkz. azure-pipelines-tasks GitHub deposu.

.NET derlemenizin çıkışını işlem hattınızda yayımlamak için aşağıdaki görevleri gerçekleştirin:

  1. .NET CLI kullanarak komutunu çalıştırın dotnet publish --output $(Build.ArtifactStagingDirectory) veya yayımla komutuyla DotNetCoreCLI@2 () görevini ekleyin.
  2. Derleme yapıtını yayımla (PublishBuildArtifacts@1) görevini kullanarak yapıtı yayımlayın.

Aşağıdaki azure-pipelines.yml kodu, derleme yapıtlarınızı zip dosyası olarak da yayımlar. Görev, PublishBuildArtifacts@1 içindeki tüm dosyaları $(Build.ArtifactStagingDirectory) derlemenizin yapıtı olarak karşıya yükler.

steps:

- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: true
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'

Daha fazla bilgi için Derleme yapıtlarını yayımlama ve indirme başlığına bakın.

NuGet akışında yayımlama

NuGet paketi oluşturmak ve NuGet akışınızda yayımlamak için, azure-pipelines.yml dosyanıza aşağıdaki kod parçacığını ekleyin:

steps:
# ...
# do this near the end of your pipeline
- script: dotnet pack /p:PackageVersion=$(version)  # define the version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
  inputs:
    nuGetServiceConnections: '<NuGet service connection>'
- task: NuGetCommand@2
  inputs:
    command: push
    nuGetFeedType: external
    publishFeedCredentials: '<NuGet service connection>'
    versioningScheme: byEnvVar
    versionEnvVar: version

Note

Görev NuGetAuthenticate@1 NuGet API anahtarı kimlik doğrulamasını desteklemiyor. NuGet API anahtarı kullanıyorsanız, girişi ve NuGetCommand@2 bağımsız değişkeni ayarlanmış commandpush görevi kullanın--api-key. Örneğin, dotnet nuget push --api-key $(NuGetApiKey).

NuGet paketlerini sürüm oluşturma ve yayımlama hakkında daha fazla bilgi için bkz. Azure Pipelines ile NuGet paketlerini yayımlama.

NuGet paketini Azure Artifacts'e yayımlama

NuGetCommand@2 görevini kullanarak NuGet paketlerinizi Azure Artifacts akışınızda yayımlayabilirsiniz. Daha fazla bilgi için bkz. Azure Pipelines ile NuGet paketlerini yayımlama.

Zip dosyası arşivini web uygulamasına yayımlama

Bir web uygulamasında yayımlamaya hazır bir ZIP dosyası arşivi oluşturmak için aşağıdaki kod parçacığını azure-pipelines.yml ekleyin. Uygulamanızı derledikten sonra çoğu durumda işlem hattınızın sonuna yakın bir noktada bu görevi çalıştırın. Örneğin, Windows üzerinde bir Azure web uygulamasına dağıtmadan önce bu görevi çalıştırın.

steps:
# ...
- task: DotNetCoreCLI@2
  inputs:
    command: publish
    publishWebProjects: True
    arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: True

Bu arşivi bir web uygulamasında yayımlamak için bkz . Azure Web Apps dağıtımı.

Sembolleri yayımlama

Görevi kullanarak PublishSymbols@2 bir Azure Artifacts sembol sunucusuna veya dosya paylaşımına sembol yayımlayabilirsiniz. Daha fazla bilgi için Sembolleri yayımlama bölümüne bakın.

Örneğin, bir dosya paylaşımında sembol yayımlamak için azure-pipelines.yml dosyanıza aşağıdaki kod parçacığını ekleyin:

- task: PublishSymbols@2
  inputs:
    SymbolsFolder: '$(Build.SourcesDirectory)'
    SearchPattern: '**/bin/**/*.pdb'
    IndexSources: true
    PublishSymbols: true
    SymbolServerType: 'FileShare' 
    SymbolsPath: '\\<server>\<shareName>'

Klasik düzenleyiciyi kullanmak için dizin kaynakları ve yayımlama sembolleri görevini işlem hattınıza ekleyin.

Sorun giderme

Projeniz yerel makinenizde başarıyla derlenip Azure Pipelines'da derlenmiyorsa aşağıdaki olası nedenleri ve düzeltici eylemleri keşfedin.

  • Microsoft tarafından barındırılan aracılarda .NET Core SDK'sının yayın öncesi sürümleri yüklü değildir ve SDK'nın yeni bir sürümünün tüm Azure Pipelines veri merkezlerine dağıtması birkaç hafta sürebilir. Bir dağıtımın tamamlanmasını beklemek yerine, Microsoft tarafından barındırılan aracılara istediğiniz .NET Core SDK sürümünü yüklemek için .NET Core kullan görevini kullanın.
  • .NET Core SDK veya Visual Studio'nun yeni bir sürümü derlemeyi bozabilir. Örneğin, NuGet aracının daha yeni bir sürümünü veya özelliğini içerebilir. Geliştirme makinenizdeki .NET Core SDK sürümlerinin ve çalışma zamanının işlem hattı aracısı ile eşleştiğinden emin olun.

    .NET Core SDK'sının sürümünü yazdırmak için işlem hattınıza bir dotnet --version komut satırı betiği ekleyebilirsiniz. Aracıda aynı sürümü dağıtmak için .NET Core Araç Yükleyicisi'ni kullanın veya projelerinizi ve geliştirme makinenizi .NET Core SDK'sının işlem hattı sürümüne güncelleştirin.

  • Bağlantı sorunları, NuGet.org paketleri geri yüklerken derlemelerinizin zaman zaman başarısız olmasına neden olabilir. NuGet.org sorunlarla karşılaşabilir veya Azure veri merkezi ile NuGet.org arasında ağ sorunları olabilir. Paketleri önbelleğe almak için yukarı akış kaynaklarıyla Azure Artifacts kullanmanın derlemelerinizin güvenilirliğini artırıp artırmadığını keşfedebilirsiniz.

    İşlem hattı, Azure Artifacts'e bağlanmak için kimlik bilgilerini otomatik olarak kullanır. Bu kimlik bilgileri genellikle Proje Koleksiyonu Derleme Hizmeti hesabından gelir. NuGet paketlerinizi önbelleğe almak için Azure Artifacts'i kullanma hakkında daha fazla bilgi edinmek için bkz . Azure Artifact akışlarına bağlanma.

  • Visual Studio'da işlem hattınızda kodlanmış olmayan bir mantık kullanıyor olabilirsiniz. Azure Pipelines, her komutu yeni bir işlemde sırayla bir görevde çalıştırır. Derlemede çalıştıran tam komutları görmek için işlem hattı derlemesindeki günlükleri inceleyin. Sorunu bulmak için, geliştirme makinenizde aynı komutları aynı sırada yineleyin.

  • Bazı .NET Core projeleri ve bazı .NET Framework projeleri içeren karma bir çözümünüz varsa, packages.config dosyalarında belirtilen paketleri geri yüklemek için NuGet görevini kullanın. .NET Framework projelerini oluşturmak için MSBuild veya Visual Studio Derleme görevini ekleyin.