Dela via


Skapa, testa och distribuera .NET Core-projekt

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

Den här artikeln beskriver hur du använder Azure Pipelines för att arbeta med .NET Core-projekt. Artikeln beskriver följande uppgifter:

  • Skapa en .NET Core-webbapp och ladda upp den till en GitHub-lagringsplats.
  • Skapa ett Azure DevOps-projekt och en Azure Pipelines-pipeline för att skapa projektet.
  • Konfigurera din byggmiljö med lokalt installerade agenter.
  • Återställ beroenden, skapa projektet och testa med .NET Core-uppgiften (DotNetCoreCLI@2) eller ett skript.
  • Använd uppgiften .NET Core (DotNetCoreCLI@2) för att lägga till andra .NET SDK-kommandon i pipelinen.
  • Använd aktiviteten Publicera kodtäckningsresultat (Publish code coverage results v2) för att publicera kodtäckningsresultat.
  • Paketera och leverera byggutdata till din pipeline, en NuGet-feed, ett ZIP-arkiv eller andra mål.
  • Skapa en .NET Core-webbapp och ladda upp den till en GitHub-lagringsplats.
  • Skapa ett Azure DevOps-projekt och en Azure Pipelines-pipeline för att skapa projektet.
  • Konfigurera din byggmiljö med Microsoft-värdbaserade eller lokalt installerade agenter.
  • Återställ beroenden, skapa projektet och testa med .NET Core-uppgiften (DotNetCoreCLI@2) eller ett skript.
  • Använd uppgiften .NET Core (DotNetCoreCLI@2) för att lägga till andra .NET SDK-kommandon i pipelinen.
  • Använd aktiviteten Publicera kodtäckningsresultat (Publish code coverage results v2) för att publicera kodtäckningsresultat.
  • Paketera och leverera byggutdata till din pipeline, en NuGet-feed, ett ZIP-arkiv eller andra mål.

Kommentar

Information om hur du arbetar med .NET Framework-projekt finns i Skapa ASP.NET-appar med .NET Framework.

Förutsättningar

För att slutföra alla procedurer i den här artikeln behöver du följande krav:

För att slutföra alla procedurer i den här artikeln behöver du följande krav:

  • En Azure DevOps-samling.
  • Ett Azure DevOps-projekt som skapats i organisationen. Anvisningar finns i Skapa ett projekt i Azure DevOps.
  • Medlemskap i gruppen Projektadministratörer så att du kan skapa Azure DevOps-projekt och ge projektåtkomst till pipelines. Ägare av Azure DevOps-organisationen har automatiskt det här medlemskapet.
  • Rollen Administratör eller Skapare för tjänstanslutningar, som du kan tilldela som projektadministratör.
  • Ett GitHub-konto och en lagringsplats.

Skapa ett .NET-projekt och ladda upp det till GitHub

Om du redan vill använda ett .NET-projekt på din GitHub-lagringsplats kan du hoppa över det här avsnittet.

Om du inte har något .NET-projekt att arbeta med skapar du ett nytt på den lokala datorn enligt följande:

  1. Installera .NET 8.0 SDK eller kontrollera att det är installerat.
  2. Öppna ett terminalfönster på den lokala datorn.
  3. Skapa en projektkatalog och navigera till den.
  4. Skapa en ny .NET 8-webbapp genom att köra dotnet new webapp -f net8.0.
  5. Skapa och kör programmet lokalt med hjälp dotnet runav .
  6. När programmet startar trycker du på Ctrl+C för att stänga av det.
  7. Ladda upp eller anslut det lokala projektet till din GitHub-lagringsplats.

Skapa en processkedja

Om du har en pipeline som du vill använda kan du hoppa över det här avsnittet. Annars kan du använda YAML-pipelineredigeraren eller den klassiska redigeraren för att skapa en pipeline på följande sätt:

  1. I ditt Azure DevOps-projekt väljer du Pipelines på den vänstra navigeringsmenyn.

  2. Välj Ny pipeline eller Skapa pipeline om den här pipelinen är den första i projektet.

  3. På skärmen Var är din kod väljer du GitHub.

  4. Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.

  5. På skärmen Välj en lagringsplats väljer du den lagringsplats som .NET-appen finns i.

  6. Du kan omdirigeras till GitHub för att installera Azure Pipelines-appen. I så fall väljer du Godkänn och installera.

  1. På fliken Konfigurera väljer du Visa mer och väljer sedan mallen ASP.NET Core-pipeline i listan. Den här mallen innehåller många av de steg och inställningar som beskrivs i den här artikeln.

    Du kan också välja Startpipeline på fliken Konfigurera för att börja med en minimal pipeline och lägga till stegen och inställningarna själv.

  2. På fliken Granska granskar du YAML-koden. Du kan anpassa filen efter dina behov. Du kan till exempel ange en annan agentpool eller lägga till en uppgift för att installera en annan .NET SDK.

  1. I ditt Azure DevOps-projekt väljer du Pipelines på den vänstra navigeringsmenyn.

  2. Välj Ny pipeline eller Skapa pipeline om den här pipelinen är den första i projektet.

  3. Välj källlagringsplatstyp. I det här exemplet använder du GitHub Enterprise Server.

  4. På nästa skärm anger du följande information:

    • URL:en för ditt GitHub-konto, till exempel https://github.com/myname.
    • Din personliga Åtkomsttoken för GitHub (PAT).
    • Ett namn på tjänstanslutningen, till exempel my-github.
  5. Välj Skapa.

  6. Välj din GitHub-lagringsplats.

  7. På fliken Konfigurera väljer du Visa mer och väljer mallen ASP.NET Core-pipeline i listan. Den här mallen innehåller många av de steg och inställningar som beskrivs i den här artikeln.

  8. Granska den nya YAML-pipelinekoden. Du kan anpassa YAML-filen efter dina behov. Du kan till exempel lägga till en uppgift för att installera en annan .NET SDK eller för att testa och publicera projektet.

  1. När du är klar väljer du Spara och kör.

    Skärmbild som visar knappen Spara och kör i en ny YAML-pipeline.

  2. Du kan också redigera incheckningsmeddelandet och sedan välja Spara och köra igen.

  3. På fliken Sammanfattning väljer du jobbet i avsnittet Jobb för att se din pipeline i praktiken.

Nu har du en fungerande pipeline som är redo att anpassa.

Konfigurera din byggmiljö

Azure Pipelines använder lokalt installerade agenter för att skapa ditt .NET Core-projekt. Du kan använda .NET Core SDK och runtime på Windows-, Linux-, macOS- eller Docker-agenter . Kontrollera att du har den nödvändiga versionen av .NET Core SDK och körningsmiljön installerad på agenterna.

Om du vill installera en specifik version av .NET SDK lägger du till UseDotNet@2 uppgiften i en YAML-pipelinefil eller aktiviteten Använd .NET Core i den klassiska redigeraren.

Kommentar

För agenter som körs på fysiska system ändrar installation av SDK:er och verktyg via din pipeline byggmiljön på agentens värd.

I följande exempel installerar YAML-kodfragment .NET SDK 8.0.x:

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

Om du vill installera en nyare SDK anger du performMultiLevelLookup till true.

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

Du kan välja agentpoolen och agenten för ditt byggjobb. Du kan också ange agenter baserat på deras funktioner. Följande YAML-pipelinefragment väljer till exempel en pool och agentfunktioner.

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

Du kan skapa dina .NET Core-projekt med hjälp av .NET Core SDK och runtime för Windows, Linux eller macOS. Som standard körs dina versioner på Microsoft-värdbaserade agenter, så du behöver inte konfigurera infrastrukturen.

Azure Pipelines Microsoft-värdbaserade agenter innehåller flera förinstallerade versioner av .NET Core SDK:er som stöds. Se Microsoft-värdbaserade agenter för en fullständig lista över tillgängliga avbildningar och konfigurationsexempel.

Följande YAML-pipelinefragment anger Ubuntu OS för agentpoolen.

pool:
  vmImage: 'ubuntu-latest' 

Microsoft-värdbaserade agenter inkluderar inte vissa äldre versioner av .NET Core SDK och inkluderar vanligtvis inte förhandsversioner. Om du behöver dessa versioner av SDK på Microsoft-värdbaserade agenter kan du installera dem med hjälp av uppgiften Använd DotNet (UseDotNet@2).

Följande kod installerar till exempel .NET 5.0.x SDK:

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

Windows-agenter innehåller redan en .NET Core-körning. Om du vill installera en nyare SDK anger du performMultiLevelLookup till true som i följande kodfragment:

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

Självhostade agenter

Du kan också använda lokalt installerade agenter för att skapa dina .NET Core-projekt . Du kan konfigurera linux-, macOS- eller Windows-agenter med egen värd.

Med lokalt installerade agenter kan du:

  • Undvik kostnaden för att UseDotNet@2 köra installationsprogrammet för verktyget.
  • Minska byggtiden om du har en stor lagringsplats.
  • Kör inkrementella versioner.
  • Använd förhandsversioner eller privata SDK:er som Microsoft inte officiellt stöder.
  • Använd SDK:er som endast är tillgängliga i företagets eller lokala miljöer.

Mer information finns i Lokalt installerade agenter.

Återställa beroenden

NuGet-paket är ett sätt för projektet att vara beroende av kod som du inte skapar. Du kan ladda ned NuGet-paket och projektspecifika verktyg genom att köra dotnet restore kommandot, antingen via .NET Core-aktiviteten (DotNetCoreCLI@2) eller som ett skript i pipelinen. Kommandot dotnet restore använder NuGet.exe paketerade med .NET Core SDK och kan bara återställa paket som anges i .NET Core-projektet *.csproj-filer .

Du kan använda uppgiften .NET Core (DotNetCoreCLI@2) för att ladda ned och återställa NuGet-paket från Azure Artifacts, NuGet.org eller en annan autentiserad extern eller intern NuGet-lagringsplats. Om NuGet-feeden finns i samma projekt som din pipeline behöver du inte autentisera. Mer information finns i .NET Core-uppgift (DotNetCoreCLI@2).

När du använder Microsoft-värdbaserade agenter får du en ny dator varje gång du kör en version som återställer paketen med varje körning. Det kan ta lång tid att återställa. Du kan åtgärda problemet genom att använda Azure Artifacts eller en lokalt installerad agent för att dra nytta av paketcacheminnet.

Följande pipeline använder uppgiften DotNetCoreCLI@2 för att återställa en Azure Artifact-feed.

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

I .NET Core SDK version 2.0 och senare återställs paket automatiskt när du kör kommandon som dotnet build. Du måste fortfarande använda .NET Core-uppgiften (DotNetCoreCLI@2) för att återställa paket om du använder en autentiserad feed.

Hantera autentiseringsuppgifterna för en autentiserad feed genom att skapa en NuGet-tjänstanslutning iAnslutningar för Pipelines-tjänsten för>projektinställningar>. Mer information om NuGet-tjänstanslutningar finns i Publicera NuGet-paket med Azure Pipelines.

Återställa paket från NuGet.org

Om du vill återställa paket från NuGet.org uppdaterar du pipelinen på följande sätt.

Du kan lägga till återställningskommandot i pipelinen genom att redigera YAML-koden direkt eller med hjälp av aktivitetsassistenten.

Lägg till .NET Core-aktiviteten (DotNetCoreCLI@2) direkt genom att infoga följande kodfragment i din azure-pipelines.yml-fil före bygguppgifterna.

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

Så här använder du aktivitetsassistenten:

  1. Gå till den position i YAML-filen där du vill infoga uppgiften.
  2. Välj .NET Core i aktivitetskatalogen.
  3. På konfigurationsskärmen väljer du Återställ i listrutan Kommando .
  4. I fältet Sökväg till projekt eller lösningar anger du sökvägen till dina *.csproj-filer . Du kan använda jokertecknet **/*.csproj för alla *.csproj-filer i alla undermappar.
  5. För feeds att lägga till, se till att feed(er) jag väljer här och Använd paket från NuGet.org är valda.
  6. Markera Lägga till.
  7. Välj Verifiera och spara och välj sedan Spara för att genomföra ändringen.

Återställa paket från en extern feed

Om du vill ange en extern NuGet-lagringsplats placerar du URL:en i en NuGet.config-fil på lagringsplatsen. Kontrollera att alla anpassade feeds har angetts i filenNuGet.config och att autentiseringsuppgifterna anges i en NuGet-tjänstanslutning.

Om du vill återställa paket från en extern feed lägger du till restore uppgiften enligt instruktionerna i föregående avsnitt, men ändrar konfigurationsinställningarna enligt följande:

Lägg till .NET Core-aktiviteten (DotNetCoreCLI@2) direkt genom att infoga följande kodfragment i din azure-pipelines.yml-fil före bygguppgifterna. Ersätt <NuGet service connection> med namnet på tjänstanslutningen.

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>

Så här använder du aktivitetsassistenten:

  1. Lägg till .NET Core-uppgiften och välj återställ på konfigurationsskärmen som i föregående procedur.
  2. För Feeds att lägga till väljer du Feeds i min NuGet.config.
  3. Under Sökväg till NuGet.configanger du sökvägen till din NuGet.config-fil i förhållande till lagringsplatsens rot. Du kan välja ellipsen ... bredvid fältet att bläddra till och välja platsen.
  4. Under Autentiseringsuppgifter för feeds utanför den här organisationen/samlingen väljer du autentiseringsuppgifter som ska användas för externa register i den valda NuGet.config filen. För feeds i samma organisation kan du lämna fältet tomt. Byggets autentiseringsuppgifter används automatiskt.

Återställa paket för .NET Framework-projekt

Om du också har ett Microsoft .NET Framework-projekt i din lösning eller använder package.json för att ange dina beroenden använder du uppgiften NuGetCommand@2 för att återställa dessa beroenden.

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

Kommentar

För Ubuntu 24.04 eller senare måste du använda NuGetAuthenticate-aktiviteten i stället för den NuGetCommand@2 uppgiften med .NET CLI. Mer information finns i Stöd för nyare Ubuntu-värdbaserade avbildningar.

Skapa projektet

Skapa ditt .NET Core-projekt genom att dotnet build köra kommandot . Du kan lägga till kommandot i pipelinen med hjälp av .NET Core-aktiviteten (DotNetCoreCLI@2) eller som ett kommandoradsskript.

Använda .NET Core-uppgiften

Du kan lägga till en bygguppgift med YAML-pipelineredigeraren genom att redigera filen direkt eller med hjälp av aktivitetsassistenten.

Lägg till .NET Core-aktiviteten (DotNetCoreCLI@2) direkt genom att infoga följande kodfragment. Uppdatera för arguments att matcha dina behov.

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

Så här använder du aktivitetsassistenten:

  1. Gå till den position i YAML-filen där du vill infoga uppgiften.
  2. Välj aktiviteten .NET Core (DotNetCoreCLI@2).
  3. Välj build i listrutan Kommando .
  4. I fältet Sökväg till projekt eller lösningar anger du sökvägen till dina *.csproj-filer . Du kan använda jokertecknet **/*.csproj för alla *.csproj-filer i alla undermappar.
  5. Markera Lägga till.
  6. Välj Spara för att checka in ändringen.

Skapa .NET Core med ett kommandoradsskript

Du kan också skapa med hjälp av ett kommandoradsskript.

Om du vill lägga till en kommandorad för bygge genom att redigera YAML-filen direkt lägger du till följande kod:

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

Du kan också använda aktivitetsassistenten för att lägga till kommandoradsaktiviteten .

  1. Gå till den position i YAML-filen där du vill infoga uppgiften.
  2. Välj kommandoradsaktiviteten (CmdLine@2) i listan.
  3. I fältet Skript anger du dotnet build kommandot med parametrar. Exempel: dotnet build --configuration $(buildConfiguration)
  4. Under Avancerad>arbetskatalog anger du sökvägen till filen *.csproj som arbetskatalog. Om du lämnar den tom är arbetskatalogen som standard $(Build.SourcesDirectory).
  5. Markera Lägga till.
  6. Välj Spara för att checka in ändringen.

Lägg till andra .NET SDK-kommandon i pipelinen

Du kan lägga till andra .NET SDK-kommandon i pipelinen med hjälp av .NET Core-aktiviteten (DotNetCoreCLI@2) eller som skript.

Lägg till ett .NET CLI-kommando med .NET Core-uppgiften

Med uppgiften .NET Core (DotNetCoreCLI@2) kan du enkelt lägga till .NET CLI-kommandon i pipelinen. Du kan lägga till .NET Core-uppgifter (DotNetCoreCLI@2) genom att redigera YAML-filen eller med hjälp av den klassiska redigeraren.

Utför följande steg för att lägga till ett .NET Core-kommando med hjälp av aktivitetsassistenten i YAML-pipelineredigeraren:

  1. Gå till den position i YAML-filen där du vill infoga uppgiften.
  2. Välj .NET Core i aktivitetskatalogen.
  3. Välj det kommando som du vill köra från listrutan i fältet Kommando .
  4. Konfigurera alla alternativ som behövs.
  5. Markera Lägga till.
  6. Välj Spara för att checka in ändringen.

Lägga till ett .NET Core CLI-kommando i ett skript

Du kan lägga till ett .NET Core CLI-kommando som ett script i din azure-pipelines.yml-fil . Till exempel:


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

Installera ett verktyg

Om du vill installera ett globalt .NET Core-verktyg som dotnetsay i en version som körs i Windows lägger du till en .NET Core-uppgift och anger följande egenskaper i konfigurationen:

  • Kommando: anpassad
  • Sökväg till projekt: lämna tom
  • Anpassat kommando: tool
  • Argument: install -g dotnetsay

Om du vill köra verktyget lägger du till en kommandoradsaktivitet och anger dotnetsay i fältet Skript .

Kör dina tester

När du har testprojekt på lagringsplatsen kan du använda .NET Core-uppgiften (DotNetCoreCLI@2) för att köra enhetstester med hjälp av testramverk som MSTest, xUnit och NUnit. Testprojektet måste referera till Microsoft.NET.Test.SDK version 15.8.0 eller senare.

Testresultat publicerar automatiskt till tjänsten och är tillgängliga för dig i byggsammanfattningen. Du kan använda testresultaten för att felsöka misslyckade tester och analysera testtid.

Om du vill lägga till en testuppgift i pipelinen lägger du till följande kodfragment i filen azure-pipelines.yml :

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

Om du använder aktivitetsassistenten för att lägga till .NET Core-aktiviteten (DotNetCoreCLI@2) anger du följande egenskaper:

  • Kommando: test
  • Sökväg till projekt: Ange till testprojekten i din lösning
  • Argument: --configuration $(BuildConfiguration)

Du kan också köra dotnet test kommandot med en specifik logger och sedan använda uppgiften PublishTestResults@2 :

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

Samla in kodtäckning

När du bygger på Windows-plattformen kan du samla in kodtäckningsmått med hjälp av den inbyggda datainsamlaren för täckning. Testprojektet måste referera till Microsoft.NET.Test.SDK version 15.8.0 eller senare.

När du använder .NET Core-aktiviteten (DotNetCoreCLI@2) för att köra tester publiceras täckningsdata automatiskt till servern. Du kan ladda ned filen *.coverage från byggsammanfattningen för att visa den i Visual Studio.

Om du vill samla in kodtäckning lägger du till --collect "Code Coverage" argumentet när du lägger till testaktiviteten i pipelinen.

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

Om du använder aktivitetsassistenten för att lägga till .NET Core-aktiviteten (DotNetCoreCLI@2) anger du följande egenskaper:

  • Kommando: test
  • Sökväg till projekt: Ange till testprojekten i din lösning
  • Argument: --configuration $(BuildConfiguration) --collect "Code Coverage"

Kontrollera att alternativet Publicera testresultat förblir markerat.

Om du vill samla in kodtäckningsresultat med hjälp dotnet test av kommandot med en specifik logger och sedan köra PublishTestResults@2 uppgift använder du följande kod:

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'

Samla in kodtäckningsmått med Coverlet

Om du bygger på Linux eller macOS kan du använda Coverlet eller ett liknande verktyg för att samla in kodtäckningsmått.

Du kan publicera kodtäckningsresultat till servern med uppgiften Publicera kodtäckningsresultat (PublishCodeCoverageResults@2). Du måste konfigurera täckningsverktyget för att generera resultat i Cobertura- eller JaCoCo-täckningsformat.

Så här kör du tester och publicerar kodtäckning med Coverlet:

  1. Lägg till en referens till coverlet.collector NuGet-paketet.
  2. Lägg till följande kodfragment i din azure-pipelines.yml-fil :
- 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'

Paketera och leverera din kod

Om du vill paketera och leverera byggutdata kan du:

  • Publicera dina byggartefakter till Azure Pipelines.
  • Skapa ett NuGet-paket och publicera det till din NuGet-feed.
  • Publicera ditt NuGet-paket till Azure Artifacts.
  • Skapa ett ZIP-arkiv för att distribuera till en webbapp.
  • Publicera symboler till en Azure Artifacts-symbolserver eller en filresurs.

Du kan också skapa en avbildning för din app och skicka den till ett containerregister.

Publicera artefakter till Azure Pipelines

Följ dessa steg för att publicera utdata från .NET-versionen till din pipeline.

  1. Kör dotnet publish --output $(Build.ArtifactStagingDirectory) med .NET CLI eller lägg till .NET Core-aktiviteten (DotNetCoreCLI@2) med publiceringskommandot .
  2. Publicera artefakten med hjälp av aktiviteten Publicera pipelineartefakt (PublishPipelineArtifact@1). Den här uppgiften laddar upp alla filer i $(Build.ArtifactStagingDirectory) som en artefakt i din version.

Lägg till följande kod i din azure-pipelines.yml-fil :

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'

Om du vill kopiera fler filer till byggkatalogen innan du publicerar använder du aktiviteten Kopiera filer (CopyFile@2).

Kommentar

Indata publishWebProjects i .NET Core-aktiviteten (DotNetCoreCLI@2) är inställt true på som standard och publicerar alla webbprojekt på din lagringsplats. Mer information finns i GitHub-lagringsplatsen azure-pipelines-tasks .

Gör följande för att publicera utdata från .NET-versionen till din pipeline:

  1. Kör dotnet publish --output $(Build.ArtifactStagingDirectory) med .NET CLI eller lägg till aktiviteten .NET Core (DotNetCoreCLI@2) med publiceringskommandot .
  2. Publicera artefakten med hjälp av aktiviteten Publicera kompileringsartefakt (PublishBuildArtifacts@1).

Följande azure-pipelines.yml kod publicerar även dina byggartefakter som en ZIP-fil. Uppgiften PublishBuildArtifacts@1 laddar upp alla filer i $(Build.ArtifactStagingDirectory) som en artefakt i din version.

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'

Mer information finns i Publicera och ladda ned byggartefakter.

Publicera till en NuGet-feed

Om du vill skapa ett NuGet-paket och publicera det i Din NuGet-feed lägger du till följande kodfragment i din azure-pipelines.yml-fil :

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

Kommentar

Uppgiften NuGetAuthenticate@1 stöder inte NuGet API-nyckelautentisering. Om du använder en NuGet API-nyckel använder du NuGetCommand@2 uppgiften med indata command inställt på push och --api-key argumentet. Exempel: dotnet nuget push --api-key $(NuGetApiKey)

Mer information om versionshantering och publicering av NuGet-paket finns i Publicera NuGet-paket med Azure Pipelines.

Publicera ett NuGet-paket till Azure Artifacts

Du kan publicera dina NuGet-paket i Azure Artifacts-flödet med hjälp av NuGetCommand@2 uppgift. Mer information finns i Publicera NuGet-paket med Azure Pipelines.

Publicera ett ZIP-filarkiv till en webbapp

Om du vill skapa ett ZIP-filarkiv som är redo att publiceras i en webbapp lägger du till följande kodfragment i azure-pipelines.yml. Kör den här uppgiften när du har skapat din app, i de flesta fall i slutet av pipelinen. Kör till exempel den här uppgiften innan du distribuerar till en Azure-webbapp i Windows.

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

Information om hur du publicerar det här arkivet till en webbapp finns i Distribution av Azure Web Apps.

Publicera symboler

Du kan använda uppgiften PublishSymbols@2 för att publicera symboler till en Azure Artifacts-symbolserver eller en filresurs. Mer information finns i Publicera symboler.

Om du till exempel vill publicera symboler till en filresurs lägger du till följande kodfragment i din azure-pipelines.yml-fil :

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

Om du vill använda den klassiska redigeraren lägger du till uppgiften Indexkällor och publicerar symboler i pipelinen.

Felsökning

Om projektet har skapats på den lokala datorn men inte i Azure Pipelines kan du utforska följande potentiella orsaker och korrigerande åtgärder.

  • Förhandsversioner av .NET Core SDK är inte installerade på Microsoft-värdbaserade agenter, och det kan ta några veckor att distribuera en ny version av SDK:n till alla Azure Pipelines-datacenter. I stället för att vänta på att en distribution ska slutföras kan du använda uppgiften Använd .NET Core för att installera den .NET Core SDK-version som du vill använda på Microsoft-värdbaserade agenter.
  • En ny version av .NET Core SDK eller Visual Studio kan bryta versionen, till exempel om den innehåller en nyare version eller funktion i NuGet-verktyget. Kontrollera att .NET Core SDK-versionerna och körningen på utvecklingsdatorn matchar pipelineagenten.

    Du kan inkludera ett dotnet --version kommandoradsskript i pipelinen för att skriva ut versionen av .NET Core SDK. Använd antingen installationsprogrammet för .NET Core-verktyget för att distribuera samma version på agenten eller uppdatera projekt- och utvecklingsdatorn till pipelineversionen av .NET Core SDK.

  • Dina versioner kan misslyckas tillfälligt på grund av anslutningsproblem när du återställer paket från NuGet.org. NuGet.org kan ha problem, eller så kan det finnas nätverksproblem mellan Azure-datacentret och NuGet.org. Du kan utforska om användning av Azure Artifacts med överordnade källor för att cachelagrar paketen förbättrar tillförlitligheten för dina versioner.

    Autentiseringsuppgifterna för pipelinen används automatiskt för att ansluta till Azure Artifacts. Dessa autentiseringsuppgifter härleds vanligtvis från Project Collection Build Service-kontot . Mer information om hur du använder Azure Artifacts för att cachelagrar dina NuGet-paket finns i Ansluta till Azure Artifact-feeds.

  • Du kanske använder viss logik i Visual Studio som inte är kodad i din pipeline. Azure Pipelines kör varje kommando i en uppgift sekventiellt i en ny process. Granska loggarna från pipelines-versionen för att se de exakta kommandona som kördes i bygget. Om du vill hitta problemet upprepar du samma kommandon i samma ordning på utvecklingsdatorn.

  • Om du har en blandad lösning som innehåller vissa .NET Core-projekt och vissa .NET Framework-projekt använder du NuGet-uppgiften för att återställa paket som anges i packages.config-filerna . Lägg till uppgiften MSBuild eller Visual Studio Build för att skapa .NET Framework-projekten.