.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:
- işlem hattınızı seçin.
- Bir NuGet akışı.
.zip
Bir web uygulamasını Azure'a dağıtmak için bir dosya.
- 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:
- işlem hattınızı seçin.
- Bir NuGet akışı.
.zip
Bir web uygulamasını Azure'a dağıtmak için bir dosya.
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 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.
Bir terminal penceresi açın.
Bir proje dizini oluşturun ve bu dizine gidin.
Yeni bir .NET 8 web uygulaması oluşturun.
dotnet new webapp -f net8.0
Aynı terminal oturumundan proje dizininizdeki komutu kullanarak
dotnet run
uygulamayı yerel olarak çalıştırın.dotnet run
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
Proje dizininden yerel bir git deposu oluşturun ve uygulama kodunu ana dala işleyin.
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.
- Tarayıcıda dev.azure.com gidin ve oturum açın.
- Kuruluşunuzu seçin.
- Kuruluştaki ilk projeyi oluşturuyorsanız Yeni proje'yi veya Proje oluştur'u seçerek yeni bir proje oluşturun.
- Bir Proje adı girin.
- Projenizin Görünürlüğünü seçin.
- Oluştur'u belirleyin.
- Tarayıcıda Azure DevOps Sunucunuza gidin.
- Koleksiyonunuzu seçin.
- Koleksiyonda ilk projeyi oluşturuyorsanız Yeni proje'yi veya Proje oluştur'u seçerek yeni bir proje oluşturun.
- Bir Proje adı girin.
- Projenizin Görünürlüğünü seçin.
- Oluştur'u belirleyin.
- Bir tarayıcı penceresinde Azure DevOps Sunucunuzda oturum açın ve koleksiyonunuzu seçin.
- Yeni proje'yi seçin.
- Proje adı girin.
- İsteğe bağlı olarak bir açıklama girin.
- 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
Azure DevOps kuruluşunuzda oturum açın ve projenize gidin.
İş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.
İlk olarak kaynak kodunuzun konumu olarak GitHub'ı seçerek sihirbazın adımlarını uygulayın.
Oturum açmak için GitHub'a yönlendirilebilirsiniz. Öyleyse GitHub kimlik bilgilerinizi girin.
Depo listesini gördüğünüzde deponuzu seçin.
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
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.
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
Hazır olduğunuzda Kaydet ve çalıştır'ı seçin.
İsteğe bağlı olarak, işleme iletisini düzenleyebilirsiniz.
Kaydet ve çalıştır'ı seçerek yeni azure-pipelines.yml dosyasını deponuza işleyin.
İş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.
- Projenize gidin ve İşlem hatları'na tıklayın.
- 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
Kaynak deponuzu seçin. Bu örnek için GitHub Enterprise Server kullanın.
- GitHub hesabınızın URL'sini girin. Örneğin,
https://github.com/<username>
. - GitHub hesabınız için kişisel erişim belirtecinizi girin.
- Bir Hizmet bağlantı adı girin. Örneğin,
my-github
. - Oluştur'u belirleyin.
- GitHub hesabınızın URL'sini girin. Örneğin,
GitHub deponuzu seçin.
İşlem hattınızı yapılandırma
Yapılandır sekmesinde Daha fazla göster'i seçin ve listeden ASP.NET Core işlem hattı şablonunu seçin.
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
Kaydet'i seçin.
İşlem hattı YAML dosyasını deponuza işlemek için işleme iletisini gerektiği gibi düzenleyin ve Kaydet'i seçin.
İş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.
Kaydet ve çalıştır'ı seçin.
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 build
komutlar ç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:
YAML dosyasında görevi eklemek istediğiniz konuma gidin.
Görev kataloğundan .NET Core'ı seçin.
Komut açılan listesinden geri yükleme komutunu seçin.
Projelerin yolu alanına dosyalarınızın yolunu
.csproj
girin.Ekle'yi seçin.
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:
YAML dosyasında görevi eklemek istediğiniz konuma gidin.
Görev kataloğundan .NET Core'ı seçin.
Komut açılan listesinden derleme komutunu seçin.
Projelerin yolu alanına dosyalarınızın yolunu
.csproj
girin.Ekle'yi seçin.
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:
YAML dosyasında görevi eklemek istediğiniz konuma gidin.
Görev kataloğundan Komut Satırı'nı seçin.
İsteğe bağlı olarak bir Görünen ad ekleyin.
dotnet build
komutunu parametrelerle girin. Örneğin,dotnet build --configuration $(buildConfiguration)
.Dosyanın yolunu
.csproj
çalışma dizini olarak girin.Ekle'yi seçin.
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:
YAML dosyasında görevi eklemek istediğiniz konuma gidin.
Görev kataloğundan .NET Core'ı seçin.
Çalıştırmak istediğiniz komutu seçin.
Gereken seçenekleri yapılandırın.
Ekle'yi seçin.
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:
- .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
.
- Komut: özel.
- Aracı çalıştırmak için bir Komut Satırı ekleyin ve aşağıdaki özellikleri ayarlayın:
- Betik:
dotnetsay
.
- Betik:
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:
Derleme işinize .NET Core görevini ekleyin ve aşağıdaki özellikleri ayarlayın:
- Komut: test.
- Projelerin yolu: Çözümünüzdeki test projelerine başvurmanız gerekir.
- Bağımsız değişkenler:
--configuration $(BuildConfiguration) --collect "Code coverage"
.
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?
S: Çözümümde test çalıştırma hakkında nereden daha fazla bilgi edinebilirim?
Y: .NET Core projelerinde birim testi