Delen via


.NET Core-projecten bouwen, testen en implementeren

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

In dit artikel wordt beschreven hoe u Azure Pipelines gebruikt om te werken met .NET Core-projecten. In het artikel worden de volgende taken beschreven:

  • Maak een .NET Core-web-app en upload deze naar een GitHub-opslagplaats.
  • Maak een Azure DevOps-project en een Azure Pipelines-pijplijn om het project te bouwen.
  • Stel uw buildomgeving in met zelf-hostende agents.
  • Herstel afhankelijkheden, bouw uw project en test met de taak .NET Core (DotNetCoreCLI@2) of een script.
  • Gebruik de taak .NET Core (DotNetCoreCLI@2) om andere .NET SDK-opdrachten toe te voegen aan uw pijplijn.
  • Gebruik de taak Publicatiecodedekkingsresultaten (Publish code coverage results v2) om resultaten van de codedekking te publiceren.
  • Pak de build-uitvoer in en lever deze aan uw pijplijn, een NuGet-feed, een ZIP-archief of andere doelen.
  • Maak een .NET Core-web-app en upload deze naar een GitHub-opslagplaats.
  • Maak een Azure DevOps-project en een Azure Pipelines-pijplijn om het project te bouwen.
  • Stel uw buildomgeving in met door Microsoft gehoste of zelf-hostende agents.
  • Herstel afhankelijkheden, bouw uw project en test met de taak .NET Core (DotNetCoreCLI@2) of een script.
  • Gebruik de taak .NET Core (DotNetCoreCLI@2) om andere .NET SDK-opdrachten toe te voegen aan uw pijplijn.
  • Gebruik de taak Publicatiecodedekkingsresultaten (Publish code coverage results v2) om resultaten van de codedekking te publiceren.
  • Pak de build-uitvoer in en lever deze aan uw pijplijn, een NuGet-feed, een ZIP-archief of andere doelen.

Notitie

Als u met .NET Framework-projecten wilt werken, raadpleegt u ASP.NET-apps bouwen met .NET Framework.

Prerequisites

Als u alle procedures in dit artikel wilt voltooien, hebt u de volgende vereisten nodig:

Als u alle procedures in dit artikel wilt voltooien, hebt u de volgende vereisten nodig:

  • Een Azure DevOps-verzameling.
  • Een Azure DevOps-project dat in de organisatie is gemaakt. Zie Een project maken in Azure DevOps voor instructies.
  • Lidmaatschap van de groep Projectbeheerders, zodat u Azure DevOps-projecten kunt maken en projecttoegang kunt verlenen tot pijplijnen. Eigenaren van Azure DevOps-organisaties hebben automatisch dit lidmaatschap.
  • De rol Beheerder of Maker voor serviceverbindingen die u als projectbeheerder kunt toewijzen.
  • Een GitHub-account en -opslagplaats.

Een .NET-project maken en uploaden naar GitHub

Als u een .NET-project wilt gebruiken dat al in uw GitHub-opslagplaats staat, kunt u deze sectie overslaan.

Als u geen .NET-project hebt om mee te werken, maakt u als volgt een nieuw project op uw lokale computer:

  1. Installeer de .NET 8.0 SDK of controleer of deze is geïnstalleerd.
  2. Open een terminalvenster op uw lokale computer.
  3. Maak een projectmap en navigeer ernaartoe.
  4. Maak een nieuwe .NET 8-web-app door deze uit te voeren dotnet new webapp -f net8.0.
  5. Bouw en voer de toepassing lokaal uit met behulp van dotnet run.
  6. Wanneer de toepassing wordt gestart, drukt u op Ctrl+C om de toepassing af te sluiten.
  7. Upload of verbind het lokale project met uw GitHub-opslagplaats.

Een pijplijn maken

Als u een pijplijn hebt die u wilt gebruiken, kunt u deze sectie overslaan. Anders kunt u de YAML-pijplijneditor of de klassieke editor gebruiken om als volgt een pijplijn te maken:

  1. Selecteer In uw Azure DevOps-project pijplijnen in het linkernavigatiemenu.

  2. Selecteer Nieuwe pijplijn of Pijplijn maken als deze pijplijn de eerste is in het project.

  3. Selecteer GitHub in het scherm Waar is uw code.

  4. U wordt mogelijk omgeleid naar GitHub om u aan te melden. Voer in dat geval uw GitHub-referenties in.

  5. Selecteer in het scherm Een opslagplaats selecteren de opslagplaats waarin uw .NET-app zich bevindt.

  6. U wordt mogelijk omgeleid naar GitHub om de Azure Pipelines-app te installeren. Als dat het zo is, selecteert u Goedkeuren en installeren.

  1. Selecteer op het tabblad Configurerenmeer weergeven en selecteer vervolgens de ASP.NET Core-pijplijnsjabloon in de lijst. Deze sjabloon bevat veel van de stappen en instellingen die in dit artikel worden beschreven.

    U kunt ook Starter-pijplijn selecteren op het tabblad Configureren om te beginnen met een minimale pijplijn en zelf de stappen en instellingen toevoegen.

  2. Bekijk de YAML-code op het tabblad Controleren . U kunt het bestand aanpassen aan uw vereisten. U kunt bijvoorbeeld een andere agentgroep opgeven of een taak toevoegen om een andere .NET SDK te installeren.

  1. Selecteer In uw Azure DevOps-project pijplijnen in het linkernavigatiemenu.

  2. Selecteer Nieuwe pijplijn of Pijplijn maken als deze pijplijn de eerste is in het project.

  3. Selecteer het type bronopslagplaats. Gebruik voor dit voorbeeld GitHub Enterprise Server.

  4. Voer in het volgende scherm de volgende gegevens in:

    • De URL voor uw GitHub-account, bijvoorbeeld https://github.com/myname.
    • Uw persoonlijke GitHub-toegangstoken (PAT).
    • Een serviceverbindingsnaam, bijvoorbeeld my-github.
  5. Klik op Creëren.

  6. Selecteer uw GitHub-opslagplaats.

  7. Selecteer op het tabblad Configureren meer weergeven en selecteer de ASP.NET Core-pijplijnsjabloon in de lijst. Deze sjabloon bevat veel van de stappen en instellingen die in dit artikel worden beschreven.

  8. Bekijk de nieuwe YAML-pijplijncode. U kunt het YAML-bestand aanpassen aan uw vereisten. U kunt bijvoorbeeld een taak toevoegen om een andere .NET SDK te installeren of uw project te testen en te publiceren.

  1. Wanneer u klaar bent, selecteert u Opslaan en uitvoeren.

    Schermopname van de knop Opslaan en uitvoeren in een nieuwe YAML-pijplijn.

  2. Bewerk desgewenst het doorvoerbericht en selecteer Opslaan en opnieuw uitvoeren .

  3. Selecteer op het tabblad Samenvatting de taak in de sectie Taken om uw pijplijn in actie te bekijken.

U hebt nu een werkende pijplijn die klaar is om aan te passen.

Stel uw ontwikkelomgeving in

Azure Pipelines maakt gebruik van zelf-hostende agents om uw .NET Core-project te bouwen. U kunt de .NET Core SDK en runtime gebruiken op Windows-, Linux-, macOS- of Docker-agents . Zorg ervoor dat u de benodigde versie van de .NET Core SDK en runtime op de agents hebt geïnstalleerd.

Als u een specifieke versie van de .NET SDK wilt installeren, voegt u de UseDotNet@2 taak toe aan een YAML-pijplijnbestand of de taak .NET Core gebruiken in de klassieke editor.

Notitie

Voor agents die worden uitgevoerd op fysieke systemen, wijzigt het installeren van SDK's en hulpprogramma's via uw pijplijn de build-omgeving op de host van de agent.

In het volgende voorbeeld wordt .NET SDK 8.0.x geïnstalleerd:

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

Als u een nieuwere SDK wilt installeren, stelt u deze in performMultiLevelLookup op true.

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

U kunt de agentpool en agent voor uw buildtaak selecteren. U kunt ook agents opgeven op basis van hun mogelijkheden. Met het volgende YAML-pijplijnfragment selecteert u bijvoorbeeld een pool- en agentmogelijkheden.

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

U kunt uw .NET Core-projecten bouwen met behulp van de .NET Core SDK en runtime voor Windows, Linux of macOS. Uw builds worden standaard uitgevoerd op door Microsoft gehoste agents, dus u hoeft geen infrastructuur in te stellen.

De door Microsoft gehoste Azure Pipelines-agents bevatten verschillende vooraf geïnstalleerde versies van ondersteunde .NET Core SDK's. Zie door Microsoft gehoste agents voor een volledige lijst met beschikbare installatiekopieën en configuratievoorbeelden.

Met het volgende YAML-pijplijnfragment stelt u het Ubuntu-besturingssysteem voor de agentgroep in.

pool:
  vmImage: 'ubuntu-latest' 

Door Microsoft gehoste agents bevatten geen oudere versies van de .NET Core SDK en bevatten doorgaans geen voorlopige versies. Als u deze versies van de SDK op door Microsoft gehoste agents nodig hebt, kunt u deze installeren met behulp van de taak DotNet (UseDotNet@2).

Met de volgende code wordt bijvoorbeeld de .NET 5.0.x SDK geïnstalleerd:

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

Windows-agents bevatten al een .NET Core-runtime. Als u een nieuwere SDK wilt installeren, stelt u deze in performMultiLevelLookuptrue op het volgende codefragment:

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

Zelfgehoste agents

U kunt ook zelf-hostende agents gebruiken om uw .NET Core-projecten te bouwen. U kunt zelf-hostende Linux-, macOS- of Windows-agents instellen.

Met zelf-hostende agents kunt u het volgende doen:

  • Vermijd de kosten van het uitvoeren van het installatieprogramma voor het UseDotNet@2 hulpprogramma.
  • Verlaag de buildtijd als u een grote opslagplaats hebt.
  • Incrementele builds uitvoeren.
  • Gebruik preview- of privé-SDK's die niet officieel worden ondersteund door Microsoft.
  • Gebruik SDK's die alleen beschikbaar zijn in uw bedrijfs- of on-premises omgevingen.

Voor meer informatie, zie Zelfgehoste agents.

Afhankelijkheden herstellen

NuGet-pakketten zijn een manier om uw project te laten afhangen van code die u niet bouwt. U kunt NuGet-pakketten en projectspecifieke hulpprogramma's downloaden door de dotnet restore opdracht uit te voeren via de taak .NET Core (DotNetCoreCLI@2) of als een script in uw pijplijn. De dotnet restore opdracht maakt gebruik van de NuGet.exe verpakt met de .NET Core SDK en kan alleen pakketten herstellen die zijn opgegeven in het .NET Core-project *.csproj-bestanden .

U kunt de taak .NET Core (DotNetCoreCLI@2) gebruiken om NuGet-pakketten te downloaden en te herstellen vanuit Azure Artifacts, NuGet.org of een andere geverifieerde externe of interne NuGet-opslagplaats. Als de NuGet-feed zich in hetzelfde project bevindt als uw pijplijn, hoeft u zich niet te verifiëren. Zie .NET Core-taak (DotNetCoreCLI@2) voor meer informatie.

Wanneer u door Microsoft gehoste agents gebruikt, krijgt u elke keer dat u een build uitvoert een nieuwe machine, waarmee de pakketten bij elke uitvoering worden hersteld. Herstel kan een aanzienlijke hoeveelheid tijd in beslag nemen. Gebruik Azure Artifacts of een zelf-hostende agent om te profiteren van de pakketcache om dit probleem te verhelpen.

De volgende pijplijn gebruikt de DotNetCoreCLI@2 taak om een Azure Artifact-feed te herstellen.

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

In .NET Core SDK versie 2.0 en hoger worden pakketten automatisch hersteld wanneer u opdrachten zoals dotnet build. U moet nog steeds de taak .NET Core (DotNetCoreCLI@2) gebruiken om pakketten te herstellen als u een geverifieerde feed gebruikt.

Beheer de referenties voor een geverifieerde feed door een NuGet-serviceverbinding te maken in Project Settings>Pipelines>Service-verbindingen. Zie NuGet-pakketten publiceren met Azure Pipelines voor meer informatie over NuGet-serviceverbindingen.

Pakketten herstellen vanuit NuGet.org

Als u pakketten uit NuGet.org wilt herstellen, werkt u de pijplijn als volgt bij.

U kunt de herstelopdracht aan uw pijplijn toevoegen door de YAML-code rechtstreeks of met behulp van de taakassistent te bewerken.

Voeg de taak .NET Core (DotNetCoreCLI@2) rechtstreeks toe door het volgende codefragment in te voegen in uw azure-pipelines.yml-bestand voordat u de buildtaken uitvoert.

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

De taakassistent gebruiken:

  1. Ga naar de positie in het YAML-bestand waar u de taak wilt invoegen.
  2. Selecteer .NET Core in de taakcatalogus.
  3. Selecteer in het configuratiescherm herstellen in de vervolgkeuzelijst Opdracht .
  4. Voer in het veld Pad naar project(en) of oplossing(en) het pad naar uw *.csproj-bestanden in. U kunt het jokerteken **/*.csproj gebruiken voor alle *.csproj-bestanden in alle submappen.
  5. Zorg ervoor dat feed(s) die ik hier selecteer en gebruik pakketten uit NuGet.org zijn geselecteerd om feeds toe te voegen.
  6. Selecteer Toevoegen.
  7. Selecteer Valideren en opslaan en selecteer Opslaan om de wijziging door te voeren.

Pakketten herstellen vanuit een externe feed

Als u een externe NuGet-opslagplaats wilt opgeven, plaatst u de URL in een NuGet.config-bestand in uw opslagplaats. Zorg ervoor dat een aangepaste feed is opgegeven in uw NuGet.config-bestand en dat referenties zijn opgegeven in een NuGet-serviceverbinding.

Als u pakketten vanuit een externe feed wilt herstellen, voegt u de restore taak toe zoals beschreven in de vorige sectie, maar wijzigt u de configuratie-instellingen als volgt:

Voeg de taak .NET Core (DotNetCoreCLI@2) rechtstreeks toe door het volgende codefragment in te voegen in uw azure-pipelines.yml-bestand voordat u de buildtaken uitvoert. Vervang door <NuGet service connection> de naam van de serviceverbinding.

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>

De taakassistent gebruiken:

  1. Voeg de .NET Core-taak toe en selecteer herstellen op het configuratiescherm zoals in de vorige procedure.
  2. Selecteer Feeds in mijn NuGet.configom feeds toe te voegen.
  3. Voer onder Pad naar NuGet.confighet pad naar het NuGet.config-bestand in ten opzichte van de hoofdmap van uw opslagplaats. U kunt het beletselteken selecteren ... naast het veld om naar de locatie te bladeren en de locatie te selecteren.
  4. Selecteer onder Referenties voor feeds buiten deze organisatie/verzameling referenties die u wilt gebruiken voor externe registers in het geselecteerde NuGet.config-bestand . Voor feeds in dezelfde organisatie kunt u dit veld leeg laten. De referenties van de build worden automatisch gebruikt.

Pakketten herstellen voor .NET Framework-projecten

Als u ook een Microsoft .NET Framework-project in uw oplossing hebt of package.json gebruikt om uw afhankelijkheden op te geven, gebruikt u de NuGetCommand@2 taak om deze afhankelijkheden te herstellen.

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

Notitie

Voor Ubuntu 24.04 of hoger moet u de NuGetAuthenticate-taak gebruiken in plaats van de NuGetCommand@2 taak met de .NET CLI. Zie Ondersteuning voor nieuwere gehoste Ubuntu-installatiekopieën voor meer informatie.

Uw project bouwen

Bouw uw .NET Core-project door de opdracht uit te dotnet build voeren. U kunt de opdracht toevoegen aan uw pijplijn met behulp van de taak .NET Core (DotNetCoreCLI@2) of als een opdrachtregelscript.

De .NET Core-taak gebruiken

U kunt een build-taak toevoegen met de YAML-pijplijneditor door het bestand rechtstreeks te bewerken of door de taakassistent te gebruiken.

Voeg de taak .NET Core (DotNetCoreCLI@2) rechtstreeks toe door het volgende fragment in te voegen. Werk de arguments lijst bij zodat deze aan uw behoeften voldoet.

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

De taakassistent gebruiken:

  1. Ga naar de positie in het YAML-bestand waar u de taak wilt invoegen.
  2. Selecteer de taak .NET Core (DotNetCoreCLI@2).
  3. Selecteer build in de vervolgkeuzelijst Opdracht .
  4. Voer in het veld Pad naar project(en) of oplossing(en) het pad naar uw *.csproj-bestanden in. U kunt het jokerteken **/*.csproj gebruiken voor alle *.csproj-bestanden in alle submappen.
  5. Selecteer Toevoegen.
  6. Selecteer Opslaan om de wijziging door te voeren.

.NET Core bouwen met een opdrachtregelscript

U kunt ook bouwen met behulp van een opdrachtregelscript.

Als u een build-opdrachtregel wilt toevoegen door het YAML-bestand rechtstreeks te bewerken, voegt u de volgende code toe:

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

U kunt de taakassistent ook gebruiken om de opdrachtregeltaak toe te voegen.

  1. Ga naar de positie in het YAML-bestand waar u de taak wilt invoegen.
  2. Selecteer de opdrachtregeltaak (CmdLine@2) in de lijst.
  3. Voer in het veld Script de dotnet build opdracht in met parameters. Bijvoorbeeld: dotnet build --configuration $(buildConfiguration).
  4. Voer onder Geavanceerde>werkmap het pad naar het bestand *.csproj in als de werkmap. Als u deze leeg laat, wordt de werkmap standaard ingesteld op $(Build.SourcesDirectory).
  5. Selecteer Toevoegen.
  6. Selecteer Opslaan om de wijziging door te voeren.

Andere .NET SDK-opdrachten toevoegen aan uw pijplijn

U kunt andere .NET SDK-opdrachten toevoegen aan uw pijplijn met behulp van de taak .NET Core (DotNetCoreCLI@2) of als scripts.

Een .NET CLI-opdracht toevoegen met de .NET Core-taak

Met de taak .NET Core (DotNetCoreCLI@2) kunt u eenvoudig .NET CLI-opdrachten toevoegen aan uw pijplijn. U kunt .NET Core-taken (DotNetCoreCLI@2) toevoegen door uw YAML-bestand te bewerken of door de klassieke editor te gebruiken.

Voer de volgende stappen uit om een .NET Core-opdracht toe te voegen met behulp van de taakassistent in de YAML-pijplijneditor:

  1. Ga naar de positie in het YAML-bestand waar u de taak wilt invoegen.
  2. Selecteer .NET Core in de taakcatalogus.
  3. Selecteer de opdracht die u wilt uitvoeren in de vervolgkeuzelijst in het veld Opdracht .
  4. Configureer alle benodigde opties.
  5. Selecteer Toevoegen.
  6. Selecteer Opslaan om de wijziging door te voeren.

Een .NET Core CLI-opdracht toevoegen in een script

U kunt een .NET Core CLI-opdracht toevoegen als een script in uw azure-pipelines.yml-bestand . Voorbeeld:


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

Een hulpprogramma installeren

Als u een algemeen .NET Core-hulpprogramma zoals dotnetsay wilt installeren in een build die wordt uitgevoerd in Windows, voegt u een .NET Core-taak toe en stelt u de volgende eigenschappen in de configuratie in:

  • Opdracht: aangepast
  • Pad naar projecten: leeg laten
  • Aangepaste opdracht: tool
  • Argumenten: install -g dotnetsay

Als u het hulpprogramma wilt uitvoeren, voegt u een opdrachtregeltaak toe en voert u dotnetsay het veld Script in.

Uw tests uitvoeren

Wanneer u projecten in uw opslagplaats hebt getest, kunt u de taak .NET Core (DotNetCoreCLI@2) gebruiken om eenheidstests uit te voeren met behulp van testframeworks zoals MSTest, xUnit en NUnit. Het testproject moet verwijzen naar Microsoft.NET.Test.SDK versie 15.8.0 of hoger.

Testresultaten worden automatisch naar de service gepubliceerd en zijn beschikbaar in de samenvatting van de build. U kunt de testresultaten gebruiken om problemen met mislukte tests op te lossen en testtijd te analyseren.

Als u een testtaak wilt toevoegen aan uw pijplijn, voegt u het volgende codefragment toe aan uw azure-pipelines.yml-bestand :

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

Als u de taakassistent gebruikt om de taak .NET Core (DotNetCoreCLI@2) toe te voegen, stelt u de volgende eigenschappen in:

  • Opdracht: testen
  • Pad naar projecten: Instellen op de testprojecten in uw oplossing
  • Argumenten: --configuration $(BuildConfiguration)

U kunt de dotnet test opdracht ook uitvoeren met een specifieke logger en vervolgens de PublishTestResults@2 taak gebruiken:

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

Codedekking verzamelen

Wanneer u bouwt op het Windows-platform, kunt u metrische gegevens over de codedekking verzamelen met behulp van de ingebouwde gegevensverzamelaar voor dekkingsgegevens. Het testproject moet verwijzen naar Microsoft.NET.Test.SDK versie 15.8.0 of hoger.

Wanneer u de taak .NET Core (DotNetCoreCLI@2) gebruikt om tests uit te voeren, worden dekkingsgegevens automatisch naar de server gepubliceerd. U kunt het *.dekkingsbestand downloaden uit het overzicht van de build om weer te geven in Visual Studio.

Als u codedekking wilt verzamelen, voegt u het --collect "Code Coverage" argument toe wanneer u de testtaak aan uw pijplijn toevoegt.

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

Als u de taakassistent gebruikt om de taak .NET Core (DotNetCoreCLI@2) toe te voegen, stelt u de volgende eigenschappen in:

  • Opdracht: testen
  • Pad naar projecten: Instellen op de testprojecten in uw oplossing
  • Argumenten: --configuration $(BuildConfiguration) --collect "Code Coverage"

Zorg ervoor dat de optie Testresultaten publiceren geselecteerd blijft.

Als u ook resultaten van de codedekking wilt verzamelen met behulp van de dotnet test opdracht met een specifieke logger en vervolgens de PublishTestResults@2 taak wilt uitvoeren, gebruikt u de volgende code:

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'

Metrische gegevens voor codedekking verzamelen met Coverlet

Als u bouwt op Linux of macOS, kunt u Coverlet of een vergelijkbaar hulpprogramma gebruiken om metrische gegevens over de codedekking te verzamelen.

U kunt codedekkingsresultaten publiceren naar de server met de taak Codedekkingsresultaten (PublishCodeCoverageResults@2). U moet het dekkingsprogramma configureren om resultaten te genereren in cobertura- of JaCoCo-dekkingsindeling.

Testen uitvoeren en codedekking publiceren met Coverlet:

  1. Voeg een verwijzing toe naar het coverlet.collector NuGet-pakket.
  2. Voeg het volgende fragment toe aan uw azure-pipelines.yml-bestand :
- 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: '<test project directory>'
  
- task: PublishCodeCoverageResults@2
  displayName: 'Publish code coverage report'
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'

Uw code verpakken en leveren

Als u de build-uitvoer wilt verpakken en leveren, kunt u het volgende doen:

  • Publiceer uw buildartefacten naar Azure Pipelines.
  • Maak een NuGet-pakket en publiceer het naar uw NuGet-feed.
  • Publiceer uw NuGet-pakket naar Azure Artifacts.
  • Maak een ZIP-archief om te implementeren in een web-app.
  • Publiceer symbolen naar een Azure Artifacts-symboolserver of een bestandsshare.

U kunt ook een image bouwen voor uw app en naar een containerregister uploaden.

Artefacten publiceren naar Azure Pipelines

Volg deze stappen om de uitvoer van uw .NET-build naar uw pijplijn te publiceren.

  1. Voer dotnet publish --output $(Build.ArtifactStagingDirectory) de .NET CLI uit of voeg de taak .NET Core (DotNetCoreCLI@2) toe met de opdracht Publiceren .
  2. Publiceer het artefact met behulp van de taak Pijplijnartefact publiceren (PublishPipelineArtifact@1 ). Met deze taak worden alle bestanden geüpload $(Build.ArtifactStagingDirectory) als artefact van uw build.

Voeg de volgende code toe aan uw azure-pipelines.yml-bestand :

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'

Als u meer bestanden naar de buildmap wilt kopiëren voordat u publiceert, gebruikt u de taak Bestanden kopiëren (CopyFile@2 ).

Notitie

De publishWebProjects invoer in de taak .NET Core (DotNetCoreCLI@2) is standaard ingesteld true op en publiceert alle webprojecten in uw opslagplaats. Zie de GitHub-opslagplaats azure-pipelines-tasks voor meer informatie.

Voer de volgende taken uit om de uitvoer van uw .NET-build naar uw pijplijn te publiceren:

  1. Voer dotnet publish --output $(Build.ArtifactStagingDirectory) uit met behulp van de .NET CLI of voeg de taak .NET Core (DotNetCoreCLI@2) toe met de opdracht Publiceren .
  2. Publiceer het artefact via de Publish build artifact (PublishBuildArtifacts@1) taak.

De volgende azure-pipelines.yml code publiceert ook uw buildartefacten als een ZIP-bestand. Met PublishBuildArtifacts@1 de taak worden alle bestanden geüpload $(Build.ArtifactStagingDirectory) als artefact van uw build.

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'

Voor meer informatie, zie Build-artefacten publiceren en downloaden.

Publiceren naar een NuGet-feed

Als u een NuGet-pakket wilt maken en naar uw NuGet-feed wilt publiceren, voegt u het volgende codefragment toe aan uw azure-pipelines.yml-bestand :

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

Notitie

De NuGetAuthenticate@1 taak biedt geen ondersteuning voor Verificatie van NuGet-API-sleutels. Als u een NuGet-API-sleutel gebruikt, gebruikt u de NuGetCommand@2 taak met de command invoer die is ingesteld op push en het --api-key argument. Bijvoorbeeld: dotnet nuget push --api-key $(NuGetApiKey).

Zie NuGet-pakketten publiceren met Azure Pipelines voor meer informatie over versiebeheer en het publiceren van NuGet-pakketten.

Een NuGet-pakket publiceren naar Azure Artifacts

U kunt uw NuGet-pakketten publiceren naar uw Azure Artifacts-feed met behulp van de NuGetCommand@2 taak. Zie NuGet-pakketten publiceren met Azure Pipelines voor meer informatie.

Een ZIP-bestandarchief publiceren naar een web-app

Als u een ZIP-bestandarchief wilt maken dat gereed is voor publicatie naar een web-app, voegt u het volgende fragment toe aan azure-pipelines.yml. Voer deze taak uit nadat u uw app hebt gebouwd, in de meeste gevallen aan het einde van uw pijplijn. Voer deze taak bijvoorbeeld uit voordat u implementeert in een Azure-web-app in Windows.

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

Als u dit archief wilt publiceren naar een web-app, raadpleegt u de implementatie van Azure Web Apps.

Symbolen publiceren

U kunt de PublishSymbols@2 taak gebruiken om symbolen te publiceren naar een Azure Artifacts-symboolserver of een bestandsshare. Zie Symbolen publiceren voor meer informatie.

Als u bijvoorbeeld symbolen naar een bestandsshare wilt publiceren, voegt u het volgende fragment toe aan uw azure-pipelines.yml-bestand :

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

Als u de klassieke editor wilt gebruiken, voegt u de indexbronnen toe en publiceert u de taak symbolen in uw pijplijn.

Probleemoplossingsproces

Als uw project is gebouwd op uw lokale computer, maar niet in Azure Pipelines, verkent u de volgende mogelijke oorzaken en corrigerende acties.

  • Prereleaseversies van de .NET Core SDK zijn niet geïnstalleerd op door Microsoft gehoste agents en het implementeren van een nieuwe versie van de SDK voor alle Azure Pipelines-datacenters kan enkele weken duren. In plaats van te wachten totdat de implementatie is voltooid, kunt u de .NET Core-taak gebruiken om de .NET Core SDK-versie te installeren die u wilt installeren op door Microsoft gehoste agents.
  • Een nieuwe versie van de .NET Core SDK of Visual Studio kan de build verbreken, bijvoorbeeld als deze een nieuwere versie of functie van het NuGet-hulpprogramma bevat. Zorg ervoor dat de .NET Core SDK-versies en -runtime op uw ontwikkelcomputer overeenkomen met de pijplijnagent.

    U kunt een dotnet --version opdrachtregelscript in uw pijplijn opnemen om de versie van de .NET Core SDK af te drukken. Gebruik het .NET Core Tool Installer om dezelfde versie op de agent te implementeren of werk uw projecten en ontwikkelcomputer bij naar de pijplijnversie van de .NET Core SDK.

  • Uw builds kunnen af en toe mislukken vanwege verbindingsproblemen wanneer u pakketten herstelt vanuit NuGet.org. NuGet.org ondervindt mogelijk problemen of er zijn netwerkproblemen tussen het Azure-datacenter en NuGet.org. U kunt verkennen of het gebruik van Azure Artifacts met upstream-bronnen om de pakketten in de cache op te slaan de betrouwbaarheid van uw builds verbetert.

    De referenties van de pijplijn worden automatisch gebruikt om verbinding te maken met Azure Artifacts. Deze referenties komen doorgaans voort uit het Project Collection Build Service-account. Zie Connect to Azure Artifact feeds (Verbinding maken met Azure Artifact-feeds) voor meer informatie over het gebruik van Azure Artifacts om uw NuGet-pakketten in de cache op te slaan.

  • Mogelijk gebruikt u een aantal logica in Visual Studio die niet in uw pijplijn is gecodeerd. Azure Pipelines voert elke opdracht in een taak sequentieel uit in een nieuw proces. Bekijk de logboeken van de pijplijnbuild om de exacte opdrachten te zien die in de build zijn uitgevoerd. Herhaal dezelfde opdrachten in dezelfde volgorde op uw ontwikkelcomputer om het probleem op te sporen.

  • Als u een gemengde oplossing hebt met een aantal .NET Core-projecten en sommige .NET Framework-projecten, gebruikt u de NuGet-taak om pakketten te herstellen die zijn opgegeven in de packages.config-bestanden . Voeg de MSBuild - of Visual Studio Build-taak toe om de .NET Framework-projecten te bouwen.