.NET Core uygulamalarını derleme, test etme ve dağıtma

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

.NET Core projelerinizi otomatik olarak derlemek, test etmek ve dağıtmak için Azure Pipeline kullanın. Bu makalede aşağıdaki görevleri nasıl gerçekleştirdiğiniz gösterilir:

  • Ş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 görevi (DotNetCoreCLI@2) veya bir betikle test edin.
  • Kodunuzu test edin ve kod kapsamı sonuçlarını yayımlamak için kod kapsamı yayımlama görevini kullanın.
  • Derleme çıkışınızı paketleyin ve şu şekilde teslim edin:
  • 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 görevi (DotNetCoreCLI@2) veya bir betikle test edin.
  • Kodunuzu test edin ve kod kapsamı sonuçlarını yayımlamak için kod kapsamı yayımlama görevini kullanın.
  • Derleme çıkışınızı paketleyin ve şu şekilde teslim edin:

Not

.NET Framework projeleriyle ilgili yardım için bkz . .NET Framework ile ASP.NET uygulamaları derleme.

Önkoşullar

  • Depo oluşturabileceğiniz bir GitHub hesabı. Ücretsiz bir tane oluşturun.
  • Azure DevOps kuruluşu ve projesi. Ücretsiz bir tane oluşturun.
  • Microsoft tarafından barındırılan aracılarda işlem hatlarını çalıştırma olanağı. Paralel bir satın alabilir veya ücretsiz katman isteyebilirsiniz.
  • Depo oluşturabileceğiniz bir GitHub hesabı. Ücretsiz bir tane oluşturun.
  • Azure DevOps koleksiyonu.
  • Docker yüklü ve aracının ana bilgisayarında çalışan şirket içinde barındırılan bir aracıda işlem hatlarını çalıştırma özelliği.

İlk işlem hattınızı oluşturma

Azure Pipelines'ı yeni mi kullanıyorsunuz? Öyleyse, önce aşağıdaki bölümü denemenizi öneririz.

.NET projesi oluşturma

Üzerinde çalışabileceğiniz bir .NET projeniz yoksa yerel sisteminizde yeni bir proje oluşturun. En son .NET 8.0 SDK'sını yükleyerek başlayın.

  1. Bir terminal penceresi açın.

  2. Bir proje dizini oluşturun ve bu dizine gidin.

  3. Yeni bir .NET 8 web uygulaması oluşturun.

    dotnet new webapp -f net8.0
    
  4. Aynı terminal oturumundan proje dizininizdeki komutu kullanarak dotnet run uygulamayı yerel olarak çalıştırın.

    dotnet run
    
  5. Uygulama başlatıldıktan sonra kapatmak için Ctrl-C tuşlarına basın.

Git deposu oluşturma ve GitHub'a bağlama

  1. Proje dizininden yerel bir git deposu oluşturun ve uygulama kodunu ana dala işleyin.

  2. Yerel Git deponuzu bir GitHub deposuna bağlayın.

DevOps projesi oluşturma

Azure Pipelines'da oturum açın. Oturum açtığınızda tarayıcınız Azure https://dev.azure.com/my-organization-name DevOps panonuzu görüntüler.

  1. Tarayıcıda dev.azure.com gidin ve oturum açın.
  2. Kuruluşunuzu seçin.
  3. Kuruluştaki ilk projeyi oluşturuyorsanız Yeni proje'yi veya Proje oluştur'u seçerek yeni bir proje oluşturun.
  4. Bir Proje adı girin.
  5. Projenizin Görünürlüğünü seçin.
  6. Oluştur'u belirleyin.
  1. Tarayıcıda Azure DevOps Sunucunuza gidin.
  2. Koleksiyonunuzu seçin.
  3. Koleksiyonda ilk projeyi oluşturuyorsanız Yeni proje'yi veya Proje oluştur'u seçerek yeni bir proje oluşturun.
  4. Bir Proje adı girin.
  5. Projenizin Görünürlüğünü seçin.
  6. Oluştur'u belirleyin.
  1. Bir tarayıcı penceresinde Azure DevOps Sunucunuzda oturum açın ve koleksiyonunuzu seçin.
  2. Yeni proje'yi seçin.
  3. Proje adı girin.
  4. İsteğe bağlı olarak bir açıklama girin.
  5. Oluştur'u belirleyin.

Derleme ortamınızı ayarlama

Derlemeleriniz şirket içinde barındırılan aracılar üzerinde çalışır. Aracılarda gerekli .NET Core SDK ve çalışma zamanı sürümünün yüklü olduğundan emin olun. .NET Core projelerinizi Windows, Linux, macOS ve Docker'da .NET Core SDK'sını ve çalışma zamanını kullanarak oluşturabilirsiniz.

İşlem hattı YAML dosyanıza UseDotNet@2 görevi ekleyerek veya klasik düzenleyiciyi kullanarak görevi işlem hattınıza ekleyerek .NET SDK'nın belirli bir sürümünü yükleyebilirsiniz.

Örnek YAML kod parçacığı:

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

Derlemeleriniz Microsoft tarafından barındırılan aracılarda çalışır. .NET Core projelerinizi Windows, Linux ve macOS üzerinde .NET Core SDK'sını ve çalışma zamanını kullanarak oluşturabilirsiniz.

Alternatif olarak, şirket içinde barındırılan bir aracı kullanabilirsiniz. Şirket içinde barındırılan bir aracı ile Azure DevOps Services tarafından resmi olarak desteklenmeyen önizleme veya özel SDK'ları kullanabilir ve artımlı derlemeler çalıştırabilirsiniz.

İşlem hattınızı oluşturma

İşlem hattınızı oluşturmak için YAML işlem hattı düzenleyicisini veya klasik düzenleyiciyi kullanabilirsiniz. Klasik düzenleyiciyi kullanmak için Klasik düzenleyiciyi kullan'ı seçin.

Yeni bir işlem hattı oluşturun ve kaynağınızı seçin
  1. Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.

  2. İşlem Hatları'na gidin ve ardından yeni işlem hattı veya İlk işlem hattınızı oluşturuyorsanız işlem hattı oluştur'u seçin.

  3. İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.

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

  5. Depo listesini gördüğünüzde deponuzu seçin.

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

İşlem hattınızı yapılandırma
  1. Yapılandır sekmesi görüntülendiğinde Daha fazla göster'i seçin ve listeden ASP.NET Core işlem hattı şablonunu seçin.

  2. YAML'nin ne yaptığını görmek için yeni işlem hattınızı inceleyin.

YAML dosyasını gereksinimlerinize göre özelleştirebilirsiniz. Örneğin, aracı havuzunu belirtebilir veya farklı .NET SDK'sını yüklemek için bir görev ekleyebilirsiniz.

İşlem hattınızı kaydetme ve çalıştırma
  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üğmesi

  2. İsteğe bağlı olarak, işleme iletisini düzenleyebilirsiniz.

  3. Kaydet ve çalıştır'ı seçerek yeni azure-pipelines.yml dosyasını deponuza işleyin.

  4. İşlem hattınızın nasıl çalıştığını izlemek için İşler bölümünde işi seçin.

İşlem hattınızı oluşturma ve çalıştırma

YAML işlem hattı düzenleyicisini veya klasik düzenleyiciyi kullanarak işlem hattı oluşturabilirsiniz.

  1. Projenize gidin ve İşlem hatları'na tıklayın.
  2. Bu proje için ilk işlem hattını oluşturuyorsanız İşlem hattı oluştur'u veya Yeni işlem hattı'nı seçin.
Kaynağınızı seçin
  1. Kaynak deponuzu seçin. Bu örnek için GitHub Enterprise Server kullanın.

    1. GitHub hesabınızın URL'sini girin. Örneğin, https://github.com/<username>.
    2. GitHub hesabınız için kişisel erişim belirtecinizi girin.
    3. Bir Hizmet bağlantı adı girin. Örneğin, my-github.
    4. Oluştur'u belirleyin.
  2. GitHub deponuzu seçin.

İşlem hattınızı yapılandırma
  1. Yapılandır sekmesinde Daha fazla göster'i seçin ve listeden ASP.NET Core işlem hattı şablonunu seçin.

  2. YAML'nin ne yaptığını görmek için yeni işlem hattınızı inceleyin.

YAML dosyasını gereksinimlerinize göre özelleştirebilirsiniz. Örneğin, .NET SDK'sını yüklemek veya projenizi test etmek ve yayımlamak için görevler ekleyebilirsiniz.

İşlem hattınızı kaydetme ve çalıştırma
  1. Kaydet'i seçin.

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

  2. İşlem hattı YAML dosyasını deponuza işlemek için işleme iletisini gerektiği gibi düzenleyin ve Kaydet'i seçin.

  3. İşlem hattınızı çalıştırmak için Çalıştır'ı seçin.

İşlem hattınız çalışırken derleme günlüklerini görmek için sayfanın üst kısmındaki derleme numarasını seçin.

  1. 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. Yeni azure-pipelines.yml dosyasını deponuza işlemek için, işleme iletisini gerektiği gibi düzenleyin ve Kaydet ve çalıştır'ı seçin.

İşlem hattınızın nasıl çalıştığını izlemek için İşler bölümünde işi seçin.

Artık özelleştirmeniz için hazır çalışan bir işlem hattınız var! İşlem hattınızı özelleştirmenin yaygın yollarından bazılarını öğrenmek için daha fazla bilgi edinin.

Derleme ortamı

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

Örneğin, işlem hattı YAML dosyasında bir havuz ve aracı özellikleri seçmek için:

Derleme işiniz için aracı havuzunu ve aracıyı seçebilirsiniz. Aracılar özelliklerine göre belirtilir.

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

İşlem hattınıza UseDotNet@2 görevi ekleyerek .NET SDK'nın belirli bir sürümünü yükleyebilirsiniz. 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.

Daha yeni bir SDK yüklemek için aşağıdaki kod parçacığında olarak ayarlayın performMultiLevelLookup true :

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

Altyapıyı ayarlamanıza gerek kalmadan .NET Core projelerinizi Windows, Linux veya macOS üzerinde derlemek için Azure Pipelines'ı kullanabilirsiniz.

Örneğin, Ubuntu burada işlem hattı YAML dosyasında ayarlanır.

pool:
  vmImage: 'ubuntu-latest' 

Görüntülerin tam listesi ve diğer yapılandırma örnekleri için bkz . Microsoft tarafından barındırılan aracılar .

Azure Pipelines'da 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. Microsoft tarafından barındırılan aracılar .NET Core SDK'sının eski sürümlerinden bazılarını içermez. Bunlar genellikle yayın öncesi sürümleri de içermez. Microsoft tarafından barındırılan aracılarda SDK'nın bu sürümlerine ihtiyacınız varsa, UseDotNet@2 görevini kullanarak bunları yükleyin.

Örneğin, 5.0.x SDK'yı yüklemek için aşağıdaki kod parçacığını ekleyin:

steps:
- task: UseDotNet@2
  inputs:
    version: '5.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 olarak ayarlayın performMultiLevelLookup true :

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

İpucu

Araç yükleyicisini çalıştırma maliyetinden tasarruf etmek için bir Linux, macOS veya Windows şirket içinde barındırılan aracı ayarlayabilirsiniz. Büyük bir deponuz varsa veya artımlı derlemeler çalıştırıyorsanız ek zaman kazanmak için şirket içinde barındırılan aracıları da kullanabilirsiniz. Şirket içinde barındırılan aracı, Azure DevOps tarafından resmi olarak desteklenmeyen veya yalnızca şirket veya şirket içi ortamlarınızda kullanılabilen önizleme veya özel SDK'ları kullanmanıza da yardımcı olabilir.

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

NuGet, derlemediğiniz koda bağımlı olmak için popüler bir yoldur. Komutunu .NET Core görevi aracılığıyla veya doğrudan işlem hattınızdaki bir betikte çalıştırarak dotnet restore proje dosyasında belirtilen NuGet paketlerini ve projeye özgü araçları indirebilirsiniz. Daha fazla bilgi için bkz . .NET Core görevi (DotNetCoreCLI@2).

NuGet paketlerini Azure Artifacts'ten, NuGet.org veya başka bir dış veya iç NuGet deposundan indirebilirsiniz. .NET Core görevi, kimliği doğrulanmış NuGet akışlarından paketleri geri yüklemek için özellikle yararlıdır. Akışınız işlem hattınızla aynı projedeyse kimlik doğrulaması yapmanız gerekmez.

Bu işlem hattı, DotNetCoreCLI@2 görevinde için dotnet restore bir Azure Artifact akışı kullanır.

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)'

dotnet restore komutu .NET Core SDK'sı NuGet.exe ile birlikte paketini kullanır ve yalnızca .NET Core proje .csproj dosyalarında belirtilen paketleri geri yükleyebilir.

Çözümünüzde bir Microsoft .NET Framework projeniz varsa veya bağımlılıklarınızı belirtmek için kullanıyorsanızpackage.json, bu bağımlılıkları geri yüklemek için NuGet görevini kullanın.

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

.NET Core SDK sürüm 2.0 ve daha yeni sürümlerde, gibi dotnet buildkomutlar çalıştırılırken paketler otomatik olarak geri yüklenir. Ancak, kimliği doğrulanmış bir akış kullanıyorsanız paketleri geri yüklemek için .NET Core görevini kullanmanız gerekir.

NuGet.org'dan paketleri geri yüklerken oluşan bağlantı sorunları nedeniyle derlemeleriniz başarısız olabilir. Paketleri önbelleğe almak için yukarı akış kaynaklarıyla Azure Artifacts'i kullanabilirsiniz. İşlem hattının kimlik bilgileri, Azure Artifacts'e bağlandığında otomatik olarak kullanılır. Bu kimlik bilgileri genellikle Proje Koleksiyonu Derleme Hizmeti hesabından türetilir. 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.

NuGet deposu belirtmek için URL'yi deponuzdaki bir NuGet.config dosyaya yerleştirin. Akışınızın kimliği doğrulandıysa, Proje Ayarları'nın altındaki Hizmetler sekmesinde bir NuGet hizmet bağlantısı oluşturarak kimlik bilgilerini yönetin.

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. Azaltmak için Azure Artifacts'i veya paket önbelleğini kullanmanın avantajıyla şirket içinde barındırılan bir aracı kullanabilirsiniz.

NuGet hizmet bağlantıları hakkında daha fazla bilgi için bkz . NuGet akışlarında yayımlama.

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

Dış akıştan paketleri geri yüklemek için aşağıdakileri yapın.

Dosyanıza doğrudan aşağıdaki kod parçacığını ekleyerek veya .NET Core görevini eklemek için görev yardımcısını kullanarak YAML işlem hattı düzenleyicisini kullanarak işlem hattınıza azure-pipelines.yml geri yükleme komutunu ekleyebilirsiniz.

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

Yer tutucuyu <> hizmet bağlantınızın adıyla değiştirin.

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

Görev yardımcısını kullanarak derleme görevi eklemek için aşağıdaki adımları uygulayın:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.

  2. Görev kataloğundan .NET Core'ı seçin.

  3. Komut açılan listesinden geri yükleme komutunu seçin.

  4. Projelerin yolu alanına dosyalarınızın yolunu .csproj girin.

  5. Ekle'yi seçin.

  6. Değişikliği kaydetmek için Kaydet'i seçin.

Not

Özel akışın dosyanızda NuGet.config belirtildiğinden ve kimlik bilgilerinin NuGet hizmet bağlantısında belirtildiğinden emin olun.

Projenizi oluşturma

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

.NET Core görevini kullanarak .NET Core derlemesi

DotNetCoreCLI@2 görevi kullanarak derlemek için YAML örneği:

steps:
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' # Update this to match your needs

YaML işlem hattı düzenleyicisini kullanarak doğrudan dosyayı düzenleyerek veya görev yardımcısını kullanarak .NET Core görevini ekleyerek bir derleme görevi ekleyebilirsiniz.

Görev yardımcısını kullanarak derleme görevi eklemek için aşağıdaki adımları uygulayın:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.

  2. Görev kataloğundan .NET Core'ı seçin.

  3. Komut açılan listesinden derleme komutunu seçin.

  4. Projelerin yolu alanına dosyalarınızın yolunu .csproj girin.

  5. Ekle'yi seçin.

  6. Değişikliği kaydetmek için Kaydet'i seçin.

Komut satırı betiğini kullanarak .NET Core derlemesi

Betik olarak kullanarak dotnet build derlemek için YAML örneği:

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

YaML işlem hattı düzenleyicisini kullanarak doğrudan dosyayı düzenleyerek veya Komut Satırı görevini ekleyerek bir derleme görevi ekleyebilirsiniz.

Komut Satırı görevini eklemek için aşağıdaki adımları kullanın:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.

  2. Görev kataloğundan Komut Satırı'nı seçin.

  3. İsteğe bağlı olarak bir Görünen ad ekleyin.

  4. dotnet build komutunu parametrelerle girin. Örneğin, dotnet build --configuration $(buildConfiguration).

  5. Dosyanın yolunu .csproj çalışma dizini olarak girin.

  6. Ekle'yi seçin.

  7. Değişikliği kaydetmek için Kaydet'i seçin.

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

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

.NET Core görevini kullanarak .NET CLI komutu ekleme

YAML işlem hattı düzenleyicisini kullanarak bir .NET Core CLI komutu eklemek için aşağıdaki adımları uygulayın:

  1. YAML dosyasında görevi eklemek istediğiniz konuma gidin.

  2. Görev kataloğundan .NET Core'ı seçin.

  3. Ç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.

Betik kullanarak .NET Core CLI komutu ekleme

.NET Core CLI komutlarını dosyanıza azure-pipelines.yml olarak script ekleyebilirsiniz.

Örnek:


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

Araç yükleme

Windows üzerinde çalışan derlemenizde dotnetsay gibi bir .NET Core genel aracı yüklemek için aşağıdaki adımları izleyin:

  1. .NET Core görevini ekleyin ve aşağıdaki özellikleri ayarlayın:
    • Komut: özel.
      • Projelerin yolu: boş bırakın.
    • Özel komut: araç.
    • Bağımsız değişkenler: install -g dotnetsay.
  2. Aracı çalıştırmak için bir Komut Satırı ekleyin ve aşağıdaki özellikleri ayarlayın:
    • Betik: dotnetsay.

Testlerinizi çalıştırma

Deponuzda test projeleriniz olduğunda MSTest, xUnit ve NUnit gibi test çerçevelerini kullanarak birim testleri çalıştırmak için .NET Core görevini kullanabilirsiniz. Test projesi Microsoft.NET.Test.SDK sürüm 15.8.0 veya sonraki bir sürüme başvurmalıdır. Test sonuçları hizmete otomatik olarak yayımlanır. Bu sonuçlar derleme özetinde kullanılabilir ve başarısız testlerin ve test zamanlama analizinin sorunlarını gidermek için kullanılabilir.

DotNetCoreCLI@2 görevini kullanarak işlem hattınıza bir test görevi ekleyebilir veya dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyebilirsiniz:

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

.NET Core görev düzenleyicisini kullanırken Command'ı test olarak ayarlayın ve Projelerin yolu çözümünüzdeki test projelerine başvurmalıdır.

Alternatif olarak, komutu belirli bir günlükçü ile çalıştırabilir dotnet test ve ardından Test Sonuçlarını Yayımla görevini kullanabilirsiniz:

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

Kod kapsamını toplama

Windows platformunda derleme yaparken, yerleşik kapsam veri toplayıcısı kullanılarak kod kapsamı ölçümleri toplanabilir. 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 görevini kullandığınızda, kapsam verileri otomatik olarak sunucuya yayımlanır. Dosya, .coverage Visual Studio'da görüntülemek üzere derleme özetinden indirilebilir.

Dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyin:

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

.NET Core görevini görev düzenleyicisi aracılığıyla eklemek için:

  1. Derleme işinize .NET Core görevini ekleyin ve aşağıdaki özellikleri ayarlayın:

    1. Komut: test.
    2. Projelerin yolu: Çözümünüzdeki test projelerine başvurmanız gerekir.
    3. Bağımsız değişkenler: --configuration $(BuildConfiguration) --collect "Code coverage".
  2. Test sonuçlarını yayımla seçeneğinin seçili kaldığından emin olun.

Komutunu çalıştırmayı dotnet test seçerseniz test sonuçları günlükçüsüsü ve kapsam seçeneklerini belirtin. Ardından Test Sonuçlarını Yayımla görevini kullanın:

steps:
# ...
# do this after your tests have 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 derleme yapıyorsanız kod kapsamı ölçümlerini toplamak için Coverlet'i veya benzer bir aracı kullanabilirsiniz.

Kod Kapsamı Sonuçlarını Yayımla (PublishCodeCoverageResults@1) göreviyle kod kapsamı sonuçlarını sunucuda yayımlayabilirsiniz. Kapsam aracı, Sonuçları Cobertura veya JaCoCo kapsam biçiminde oluşturacak şekilde yapılandırılmalıdır.

Coverlet ile testleri çalıştırmak ve kod kapsamını yayımlamak için aşağıdaki görevleri gerçekleştirin:

  • NuGet paketine coverlet.collector bir başvuru ekleyin.

  • Dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyin:

    - task: UseDotNet@2
      inputs:
        version: '8.x'
        includePreviewVersions: true # Required for preview versions
    
    - task: DotNetCoreCLI@2
      displayName: 'dotnet build'
      inputs:
        command: 'build'
        configuration: $(buildConfiguration)
    
    - task: DotNetCoreCLI@2
      displayName: 'dotnet test'
      inputs:
        command: 'test'
        arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura'
        publishTestResults: true
        projects: 'MyTestLibrary' # update with your test project directory
    
    - task: PublishCodeCoverageResults@1
      displayName: 'Publish code coverage report'
      inputs:
        codeCoverageTool: 'Cobertura'
        summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
    

Kodunuzu paketleyip teslim edin

Derleme yapıtlarınızı şu şekilde yayımlayabilirsiniz:

  • Azure Pipelines'da yayımlama.
  • Paketleri Azure Artifacts'e yayımlama.
  • NuGet paketi oluşturma ve NuGet akışınızda yayımlama.
  • Web uygulamanızı dağıtmak için bir .zip arşivi oluşturma.

Yapıtları Azure Pipelines'da yayımlama

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

  • .NET CLI üzerinde komutunu çalıştırın dotnet publish --output $(Build.ArtifactStagingDirectory) veya yayımla komutuyla DotNetCoreCLI@2 görevi ekleyin.
  • İşlem Hattı Yapıtını Yayımla görevini kullanarak yapıtı yayımlayın.

Dosyanıza azure-pipelines.yml aşağıdaki kod parçacığını ekleyin:

steps:

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

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishPipelineArtifact@1
  inputs:
    targetPath: '$(Build.ArtifactStagingDirectory)' 
    artifactName: 'myWebsite'

Not

DotNetCoreCLI@2 görevinin varsayılan olarak true olarak ayarlanmış bir publishWebProjects girişi vardır. Bu görev, deponuzdaki tüm web projelerini varsayılan olarak yayımlar. GitHub'daki açık kaynak görevinde daha fazla yardım ve bilgi bulabilirsiniz.

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

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

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

Derleme yapıtlarınızı azure-pipelines.yml .zip dosyası olarak yayımlamak için aşağıdaki kod parçacığını dosyanıza ekleyin:

steps:

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

# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'

Daha fazla bilgi için bkz . Derleme yapıtlarını yayımlama ve indirme.

NuGet akışında yayımlama

NuGet paketi oluşturmak ve NuGet akışınızda yayımlamak için aşağıdaki kod parçacığını ekleyin:

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

Not

NuGetAuthenticate@1 görevi NuGet API anahtarı kimlik doğrulamasını desteklemez. NuGet API anahtarı kullanıyorsanız girişin --api-key bağımsız değişkeniyle command ayarlandığı push NuGetCommand@2 görevini kullanın. Ö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 . NuGet akışlarında yayımlama.

NuGet paketini Azure Artifacts'e yayımlama

Azure Artifact akışınıza göndermek için NuGetCommand@2 kullanarak NuGet paketlerinizi Azure Artifacts akışınızda yayımlayabilirsiniz. Örneğin bkz . Azure Pipelines ile NuGet paketlerini yayımlama.

Bir web uygulaması dağıtma

Web uygulamasında yayımlamaya hazır bir .zip dosya arşivi oluşturmak için aşağıdaki kod parçacığını ekleyin:

steps:
# ...
# do this after you've built your app, near the end of your pipeline in most cases
# for example, you do this before you deploy to an Azure web app on Windows
- 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ı.

Görüntü oluşturma ve kapsayıcı kayıt defterine gönderme

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

Sembolleri yayımlama

PublishSymbols@2 görevini kullanarak bir Azure Artifacts sembol sunucusuna veya dosya paylaşımına sembol yayımlayabilirsiniz.

Örneğin, bir dosya paylaşımında sembol yayımlamak için dosyanıza azure-pipelines.yml 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 kullanırken, işlem hattınıza eklemek için Görev kataloğundan Dizin kaynakları yayımlama sembolleri'ni seçin.

Daha fazla bilgi için bkz . Sembolleri yayımlama.

Sorun giderme

Projenizi geliştirme makinenizde derleyebilir ancak Azure Pipelines'da derleme konusunda sorun yaşıyorsanız aşağıdaki olası nedenleri ve düzeltici eylemleri keşfedin:

  • .NET Core SDK'sının yayın öncesi sürümleri Microsoft tarafından barındırılan aracılara yüklenmez. .NET Core SDK'sının yeni bir sürümü yayımlandıktan sonra tüm Azure Pipelines veri merkezlerine dağıtımı birkaç hafta sürebilir. Bu dağıtımın tamamlanmasını beklemeniz gerekmez. 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 kullanabilirsiniz.
  • Geliştirme makinenizde .NET Core SDK sürümlerini ve çalışma zamanını denetleyin ve aracıyla 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 komut satırı betiği dotnet --version 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'nın daha yeni bir sürümüne güncelleştirin.

  • Visual Studio IDE'de işlem hattınızda kodlanmış olmayan bir mantık kullanıyor olabilirsiniz. Azure Pipelines, görevlerde belirttiğiniz komutların her birini yeni bir işlemde birer birer çalıştırır. Derlemenin bir parçası olarak çalıştıran tam komutları görmek için işlem hatları derlemesinden 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, dosyalarda packages.config belirtilen paketleri geri yüklemek için NuGet görevini de kullanmanız gerekir. .NET Framework projelerini oluşturmak için MSBuild veya Visual Studio Derleme görevini ekleyin.

  • Derlemeleriniz paketleri geri yüklerken zaman zaman başarısız olabilir: NuGet.org sorun yaşıyor veya Azure veri merkezi ile NuGet.org arasında ağ sorunları var. Yukarı akış kaynağı olarak NuGet.org ile Azure Artifacts'in kullanılmasının, bizim denetimimizde olmadığından derlemelerinizin güvenilirliğini artırıp artırmadığını keşfedebilirsiniz.

  • Bazen, .NET Core SDK veya Visual Studio'nun yeni sürümü dağıtıldığında derlemeniz bozulabilir. Örneğin, SDK ile birlikte NuGet aracının daha yeni bir sürümü veya özelliği gönderildiğinde derlemeniz bozulabilir. Bu sorunu yalıtmak için derlemenizde kullanılan .NET Core SDK sürümünü belirtmek için .NET Core Araç Yükleyicisi görevini kullanın.

SSS

S: Azure Artifacts hakkında nereden daha fazla bilgi edinebilirim?

Y: Azure Artifacts'te Paket Yönetimi

S: .NET Core komutları hakkında nereden daha fazla bilgi edinebilirim?

Y: .NET Core CLI araçları

S: Çözümümde test çalıştırma hakkında nereden daha fazla bilgi edinebilirim?

Y: .NET Core projelerinde birim testi

S: Görevler hakkında nereden daha fazla bilgi edinebilirim?

Y: Derleme ve yayın görevleri