Bygg, testa och distribuera .NET Core-appar
Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019
Använd en Azure Pipeline för att automatiskt skapa, testa och distribuera dina .NET Core-projekt. Den här artikeln visar hur du utför följande uppgifter:
- Konfigurera din byggmiljö med lokalt installerade agenter.
- Återställ beroenden, skapa projektet och testa med .NET Core-uppgiften (DotNetCoreCLI@2) eller ett skript.
- Testa koden och använd uppgiften publicera kodtäckning för att publicera kodtäckningsresultat.
- Paketera och leverera byggutdata till:
- din pipeline.
- en NuGet-feed.
- en
.zip
fil för att distribuera en webbapp till Azure.
- 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.
- Testa koden och använd uppgiften publicera kodtäckning för att publicera kodtäckningsresultat.
- Paketera och leverera byggutdata till:
- din pipeline.
- en NuGet-feed.
- en
.zip
fil för att distribuera en webbapp till Azure.
Kommentar
Hjälp med .NET Framework-projekt finns i Skapa ASP.NET-appar med .NET Framework.
Förutsättningar
- Ett GitHub-konto där du kan skapa en lagringsplats. Skapa en kostnadsfritt.
- En Azure DevOps-organisation och ett projekt. Skapa en kostnadsfritt.
- En möjlighet att köra pipelines på Microsoft-värdbaserade agenter. Du kan antingen köpa ett parallellt jobb eller begära en kostnadsfri nivå.
- Ett GitHub-konto där du kan skapa en lagringsplats. Skapa en kostnadsfritt.
- En Azure DevOps-samling.
- En möjlighet att köra pipelines på en lokalt installerad agent med Docker installerat och körs på agentens värd.
Skapa din första pipeline
Är du nybörjare på Azure Pipelines? I så fall rekommenderar vi att du provar följande avsnitt först.
Skapa ett .NET-projekt
Om du inte har något .NET-projekt att arbeta med skapar du ett nytt i det lokala systemet. Börja med att installera den senaste .NET 8.0 SDK .
Öppna ett terminalfönster.
Skapa en projektkatalog och navigera till den.
Skapa en ny .NET 8-webbapp.
dotnet new webapp -f net8.0
Från samma terminalsession kör du programmet lokalt med kommandot från projektkatalogen
dotnet run
.dotnet run
När programmet har startat trycker du på Ctrl-C för att stänga av det.
Skapa en git-lagringsplats och anslut den till GitHub
Från projektkatalogen skapar du en lokal git-lagringsplats och checkar in programkoden till huvudgrenen.
Anslut din lokala Git-lagringsplats till en GitHub-lagringsplats.
Skapa ett DevOps-projekt
Logga in på Azure Pipelines. När du har loggat in går webbläsaren till https://dev.azure.com/my-organization-name
och visar din Azure DevOps-instrumentpanel.
- I en webbläsare går du till dev.azure.com och loggar in.
- Välj din organisation.
- Skapa ett nytt projekt genom att välja Nytt projekt eller Skapa projekt om du skapar det första projektet i organisationen.
- Ange ett projektnamn.
- Välj Synlighet för projektet.
- Välj Skapa.
- I en webbläsare går du till din Azure DevOps Server.
- Välj din samling.
- Skapa ett nytt projekt genom att välja Nytt projekt eller Skapa projekt om du skapar det första projektet i samlingen.
- Ange ett projektnamn.
- Välj Synlighet för projektet.
- Välj Skapa.
- I ett webbläsarfönster loggar du in på Din Azure DevOps Server och väljer din samling.
- Välj Nytt projekt.
- Ange ett projektnamn.
- Skriv en beskrivning om du vill.
- Välj Skapa.
Konfigurera din byggmiljö
Dina versioner körs på lokalt installerade agenter. Kontrollera att du har den nödvändiga versionen av .NET Core SDK och körningsmiljön installerad på agenterna. Du kan skapa dina .NET Core-projekt med hjälp av .NET Core SDK och runtime i Windows, Linux, macOS och Docker.
Du kan installera en specifik version av .NET SDK genom att lägga till den UseDotNet@2 uppgiften i YAML-pipelinefilen eller lägga till uppgiften i pipelinen med hjälp av den klassiska redigeraren.
Exempel på YAML-kodfragment:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Dina versioner körs på Microsoft-värdbaserade agenter. Du kan skapa dina .NET Core-projekt med hjälp av .NET Core SDK och körning i Windows, Linux och macOS.
Du kan också använda en lokalt installerad agent. Med en lokalt installerad agent kan du använda förhandsversioner eller privata SDK:er som inte stöds officiellt av Azure DevOps Services och köra inkrementella versioner.
Skapa din pipeline
Du kan använda YAML-pipelineredigeraren eller den klassiska redigeraren för att skapa din pipeline. Om du vill använda den klassiska redigeraren väljer du Använd den klassiska redigeraren.
Skapa en ny pipeline och välj din källa
Logga in på din Azure DevOps-organisation och gå till projektet.
Gå till Pipelines och välj sedan Ny pipeline eller Skapa pipeline om du skapar din första pipeline.
Utför stegen i guiden genom att först välja GitHub som plats för källkoden.
Du kan omdirigeras till GitHub för att logga in. I så fall anger du dina GitHub-autentiseringsuppgifter.
När du ser listan över lagringsplatser väljer du din lagringsplats.
Du kan omdirigeras till GitHub för att installera Azure Pipelines-appen. I så fall väljer du Godkänn och installera.
Konfigurera din pipeline
När fliken Konfigurera visas väljer du Visa mer och väljer mallen ASP.NET Core-pipeline i listan.
Granska din nya pipeline för att se vad YAML gör.
Du kan anpassa YAML-filen efter dina behov. Du kan till exempel ange agentpoolen eller lägga till en uppgift för att installera en annan .NET SDK.
Spara och kör din pipeline
När du är klar väljer du Spara och kör.
Du kan också redigera incheckningsmeddelandet.
Checka in den nya azure-pipelines.yml filen på lagringsplatsen genom att välja Spara och köra.
Om du vill se din pipeline i praktiken väljer du jobbet i avsnittet Jobb .
Skapa och köra din pipeline
Du kan skapa en pipeline med hjälp av YAML-pipelineredigeraren eller den klassiska redigeraren.
- Gå till projektet och välj Pipelines.
- Välj Skapa pipeline eller Ny pipeline om du skapar den första pipelinen för det här projektet.
Välj din källa
Välj källlagringsplatsen. I det här exemplet använder du GitHub Enterprise Server.
- Ange URL:en för ditt GitHub-konto. Exempel:
https://github.com/<username>
- Ange din personliga åtkomsttoken för ditt GitHub-konto.
- Ange ett namn på tjänstanslutningen. Exempel:
my-github
- Välj Skapa.
- Ange URL:en för ditt GitHub-konto. Exempel:
Välj din GitHub-lagringsplats.
Konfigurera din pipeline
På fliken Konfigurera väljer du Visa mer och väljer mallen ASP.NET Core-pipeline i listan.
Granska din nya pipeline för att se vad YAML gör.
Du kan anpassa YAML-filen efter dina behov. Du kan till exempel lägga till uppgifter för att installera en .NET SDK eller för att testa och publicera projektet.
Spara och kör din pipeline
Välj Spara.
Om du vill checka in YAML-pipelinefilen på lagringsplatsen redigerar du incheckningsmeddelandet efter behov och väljer Spara.
Välj Kör för att köra pipelinen.
Om du vill se byggloggarna när pipelinen körs väljer du versionsnumret överst på sidan.
Välj Spara och kör.
Om du vill checka in den nya azure-pipelines.yml filen på lagringsplatsen redigerar du incheckningsmeddelandet efter behov och väljer Spara och kör.
Om du vill se din pipeline i praktiken väljer du jobbet i avsnittet Jobb .
Nu har du en fungerande pipeline som du kan anpassa! Läs vidare för att lära dig några av de vanliga sätten att anpassa din pipeline.
Skapa miljö
Azure Pipelines använder lokalt installerade agenter för att skapa dina .NET Core-projekt. Kontrollera att du har den nödvändiga versionen av .NET Core SDK och körningsmiljön installerad på agenterna. Du kan skapa dina .NET Core-projekt med hjälp av .NET Core SDK och runtime i Windows, Linux, macOS och Docker.
Om du till exempel vill välja en pool och agentfunktioner i YAML-pipelinefilen:
Du kan välja agentpoolen och agenten för ditt byggjobb. Agenter anges baserat på deras funktioner.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Du kan installera en specifik version av .NET SDK genom att lägga till UseDotNet@2 uppgift i pipelinen. Tänk på att 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.
Om du vill installera en nyare SDK anger du performMultiLevelLookup
till true
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
Du kan använda Azure Pipelines för att skapa dina .NET Core-projekt i Windows, Linux eller macOS utan att behöva konfigurera infrastrukturen.
Ubuntu anges till exempel här i YAML-pipelinefilen.
pool:
vmImage: 'ubuntu-latest'
Se Microsoft-värdbaserade agenter för en fullständig lista över avbildningar och ytterligare konfigurationsexempel.
Microsoft-värdbaserade agenter i Azure Pipelines innehåller flera förinstallerade versioner av .NET Core SDK:er som stöds. Microsoft-värdbaserade agenter innehåller inte några av de äldre versionerna av .NET Core SDK. De innehåller inte heller vanligtvis förhandsversioner. Om du behöver dessa versioner av SDK på Microsoft-värdbaserade agenter installerar du dem med hjälp av UseDotNet@2 uppgift.
Om du till exempel vill installera 5.0.x SDK lägger du till följande kodfragment:
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
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
Dricks
Om du vill spara kostnaden för att köra installationsprogrammet för verktyget kan du konfigurera en Linux-, macOS- eller Windows-agent med egen värd. Du kan också använda lokalt installerade agenter för att spara ytterligare tid om du har en stor lagringsplats eller om du kör inkrementella versioner. En lokalt installerad agent kan också hjälpa dig att använda förhandsversioner eller privata SDK:er som inte stöds officiellt av Azure DevOps eller endast är tillgängliga i företagets eller lokala miljöer.
Återställa beroenden
NuGet är ett populärt sätt att vara beroende av kod som du inte skapar. Du kan ladda ned NuGet-paket och projektspecifika verktyg som anges i projektfilen genom att köra dotnet restore
kommandot antingen via .NET Core-aktiviteten eller direkt i ett skript i pipelinen. Mer information finns i .NET Core-uppgift (DotNetCoreCLI@2).
Du kan ladda ned NuGet-paket från Azure Artifacts, NuGet.org eller någon annan extern eller intern NuGet-lagringsplats. . NET Core-uppgiften är särskilt användbar för att återställa paket från autentiserade NuGet-feeds. Om feeden finns i samma projekt som pipelinen behöver du inte autentisera.
Den här pipelinen använder en Azure Artifact-feed för dotnet restore
i den DotNetCoreCLI@2 uppgiften.
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)'
Kommandot dotnet restore
använder det NuGet.exe
paketerade med .NET Core SDK och kan bara återställa paket som anges i .NET Core-projektfilerna .csproj
.
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 NuGet-uppgiften för att återställa dessa beroenden.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
I .NET Core SDK version 2.0 och senare återställs paket automatiskt när du kör kommandon som dotnet build
. Du skulle dock fortfarande behöva använda .NET Core-uppgiften för att återställa paket om du använder en autentiserad feed.
Dina versioner kan misslyckas på grund av anslutningsproblem när du återställer paket från NuGet.org. Du kan använda Azure Artifacts med överordnade källor för att cachelagrar paketen. Autentiseringsuppgifterna för pipelinen används automatiskt när den ansluter 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.
Om du vill ange en NuGet-lagringsplats placerar du URL:en i en NuGet.config
fil på lagringsplatsen. Om ditt flöde autentiseras hanterar du autentiseringsuppgifterna genom att skapa en NuGet-tjänstanslutning på fliken Tjänster under Projektinställningar.
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. För att minimera kan du antingen använda Azure Artifacts eller en lokalt installerad agent med fördelen att använda paketcachen.
Mer information om NuGet-tjänstanslutningar finns i publicera till NuGet-feeds.
Återställa paket från en extern feed
Gör följande för att återställa paket från en extern feed.
Du kan lägga till återställningskommandot i pipelinen med yaml-pipelineredigeraren genom att direkt infoga följande kodfragment i azure-pipelines.yml
filen eller använda aktivitetsassistenten för att lägga till .NET Core-aktiviteten .
# 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>
Ersätt platshållaren> med namnet på <tjänstanslutningen.
Så här använder du aktivitetsassistenten:
Utför följande steg för att lägga till en bygguppgift med hjälp av aktivitetsassistenten:
Gå till den position i YAML-filen där du vill infoga uppgiften.
Välj .NET Core i aktivitetskatalogen.
Välj kommandot restore i listrutan Kommando.
I fältet Sökväg till projekt anger du sökvägen till dina
.csproj
filer.Markera Lägga till.
Välj Spara för att checka in ändringen.
Kommentar
Kontrollera att den anpassade feeden har angetts i NuGet.config
filen och att autentiseringsuppgifterna har angetts i NuGet-tjänstanslutningen.
Skapa projektet
Skapa dina .NET Core-projekt genom att dotnet build
köra kommandot . Du kan lägga till kommandot i pipelinen som ett kommandoradsskript eller med hjälp av .NET Core-uppgiften.
.NET Core-kompilering med hjälp av .NET Core-uppgiften
YAML-exempel för att skapa med hjälp av DotNetCoreCLI@2 uppgift:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)' # Update this to match your needs
Du kan lägga till en byggaktivitet med yaml-pipelineredigeraren genom att redigera filen direkt eller lägga till .NET Core-aktiviteten med hjälp av aktivitetsassistenten.
Utför följande steg för att lägga till en bygguppgift med hjälp av aktivitetsassistenten:
Gå till den position i YAML-filen där du vill infoga uppgiften.
Välj .NET Core i aktivitetskatalogen.
Välj kommandot build i listrutan Kommando.
I fältet Sökväg till projekt anger du sökvägen till dina
.csproj
filer.Markera Lägga till.
Välj Spara för att checka in ändringen.
.NET Core-version med kommandoradsskript
YAML-exempel för att skapa med ett dotnet build
skript:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
Du kan lägga till en bygguppgift med yaml-pipelineredigeraren genom att redigera filen direkt eller lägga till kommandoradsaktiviteten.
Använd följande steg för att lägga till kommandoradsaktiviteten:
Gå till den position i YAML-filen där du vill infoga uppgiften.
Välj kommandoraden i aktivitetskatalogen.
Du kan också lägga till ett visningsnamn.
Ange kommandot
dotnet build
med parametrar. Exempel:dotnet build --configuration $(buildConfiguration)
Ange sökvägen till
.csproj
filen som arbetskatalog.Markera Lägga till.
Välj Spara för att checka in ändringen.
Lägga till .NET SDK-kommandon i pipelinen
Du kan lägga till .NET SDK-kommandon i projektet som ett skript eller med hjälp av .NET Core-aktiviteten. Med .NET Core-aktiviteten (DotNetCoreCLI@2) kan du enkelt lägga till CLI-kommandon för dotnet i pipelinen. Du kan lägga till .NET Core-uppgifter genom att redigera YAML-filen eller med den klassiska redigeraren.
Lägg till ett .NET CLI-kommando med hjälp av .NET Core-uppgiften
Utför följande steg för att lägga till ett .NET Core CLI-kommando med yaml-pipelineredigeraren:
Gå till den position i YAML-filen där du vill infoga uppgiften.
Välj .NET Core i aktivitetskatalogen.
Välj det kommando som du vill köra.
Konfigurera alla alternativ som behövs.
Markera Lägga till.
Välj Spara för att checka in ändringen.
Lägga till ett .NET Core CLI-kommando med hjälp av ett skript
Du kan lägga till .NET Core CLI-kommandon som en script
i azure-pipelines.yml
filen.
Exempel:
steps:
# ...
- script: dotnet test <test-project>
Installera ett verktyg
Utför följande steg för att installera ett globalt .NET Core-verktyg som dotnetsay i din version som körs i Windows:
- Lägg till .NET Core-aktiviteten och ange följande egenskaper:
- Kommando: anpassad.
- Sökväg till projekt: lämna tom.
- Anpassat kommando: verktyg.
- Argument:
install -g dotnetsay
.
- Kommando: anpassad.
- Om du vill köra verktyget lägger du till en kommandorad och anger följande egenskaper:
- Skript:
dotnetsay
.
- Skript:
Kör dina tester
När du har testprojekt på lagringsplatsen kan du använda .NET Core-uppgiften 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 publiceras automatiskt till tjänsten. Dessa resultat är tillgängliga för dig i byggsammanfattningen och kan användas för felsökning av misslyckade tester och analys av testtid.
Du kan lägga till en testaktivitet i pipelinen med hjälp av DotNetCoreCLI@2 uppgift eller lägga till följande kodfragment i azure-pipelines.yml
filen:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
När du använder .NET Core-aktivitetsredigeraren anger du Kommando för att testa och Sökväg till projekt bör referera till testprojekten i din lösning.
Du kan också köra dotnet test
kommandot med en specifik logger och sedan använda uppgiften Publicera testresultat :
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'
Samla in kodtäckning
När du skapar på Windows-plattformen kan kodtäckningsmått samlas in 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-uppgiften för att köra tester publiceras täckningsdata automatiskt till servern. Filen .coverage
kan laddas ned från byggsammanfattningen för visning i Visual Studio.
Lägg till följande kodfragment i azure-pipelines.yml
filen:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
Så här lägger du till .NET Core-aktiviteten via uppgiftsredigeraren:
Lägg till .NET Core-aktiviteten i byggjobbet och ange följande egenskaper:
- Kommando: test.
- Sökväg till projekt: Bör referera till testprojekten i din lösning.
- Argument:
--configuration $(BuildConfiguration) --collect "Code coverage"
.
Kontrollera att alternativet Publicera testresultat förblir markerat.
Om du väljer att köra dotnet test
kommandot anger du loggnings- och täckningsalternativen för testresultat. Använd sedan uppgiften Publicera testresultat :
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'
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@1). Täckningsverktyget måste konfigureras för att generera resultat i Cobertura- eller JaCoCo-täckningsformat.
Utför följande uppgifter för att köra tester och publicera kodtäckning med Coverlet:
Lägg till en referens till
coverlet.collector
NuGet-paketet.Lägg till följande kodfragment i
azure-pipelines.yml
filen:- 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'
Paketera och leverera din kod
Du kan publicera dina byggartefakter genom att:
- Publicera till Azure Pipelines.
- Publicera paket till Azure Artifacts.
- Skapa ett NuGet-paket och publicera till din NuGet-feed.
- Skapa ett .zip arkiv för att distribuera webbappen.
Publicera artefakter till Azure Pipelines
Gör följande för att publicera utdata från .NET-versionen till din pipeline:
- Kör
dotnet publish --output $(Build.ArtifactStagingDirectory)
på .NET CLI eller lägg till uppgiften DotNetCoreCLI@2 med publiceringskommandot. - Publicera artefakten med hjälp av aktiviteten Publicera pipelineartefakt .
Lägg till följande kodfragment i azure-pipelines.yml
filen:
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'
Kommentar
Den DotNetCoreCLI@2 aktiviteten har en publishWebProjects
indata som är inställd på true som standard. Den här uppgiften publicerar alla webbprojekt på lagringsplatsen som standard. Mer hjälp och information finns i uppgiften med öppen källkod på GitHub.
Om du vill kopiera fler filer till byggkatalogen innan du publicerar använder du aktiviteten Kopiera filer (CopyFile@2).
Gör följande för att publicera utdata från .NET-versionen till din pipeline:
- Kör
dotnet publish --output $(Build.ArtifactStagingDirectory)
på CLI eller lägg till uppgiften DotNetCoreCLI@2 med publiceringskommandot. - Publicera artefakten med hjälp av aktiviteten Publicera kompileringsartefakt (PublishBuildArtifacts@1).
Lägg till följande kodfragment i azure-pipelines.yml
filen för att publicera dina byggartefakter som en .zip fil:
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'
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:
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
Kommentar
Den NuGetAuthenticate@1 uppgiften stöder inte NuGet API-nyckelautentisering. Om du använder en NuGet API-nyckel använder du den NuGetCommand@2 uppgiften med indata command
inställt push
på med argumentet --api-key . Exempel: dotnet nuget push --api-key $(NuGetApiKey)
Mer information om versionshantering och publicering av NuGet-paket finns i Publicera till NuGet-feeds.
Publicera ett NuGet-paket till Azure Artifacts
Du kan publicera dina NuGet-paket i Azure Artifacts-flödet med hjälp av NuGetCommand@2 för att skicka till Azure Artifact-flödet. Se till exempel Publicera NuGet-paket med Azure Pipelines.
Distribuera en webbapp
Om du vill skapa ett .zip filarkiv som är redo att publiceras i en webbapp lägger du till följande kodfragment:
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
Information om hur du publicerar det här arkivet till en webbapp finns i Distribution av Azure Web Apps.
Skapa en avbildning och skicka till containerregistret
Du kan också skapa en avbildning för din app och skicka den till ett containerregister.
Publicera symboler
Du kan använda PublishSymbols@2 uppgift för att publicera symboler till en Azure Artifacts-symbolserver eller en filresurs.
Om du till exempel vill publicera symboler till en filresurs lägger du till följande kodfragment i azure-pipelines.yml
filen:
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\server\shareName'
När du använder den klassiska redigeraren väljer du Indexkällor publicera symboler från aktivitetskatalogen för att lägga till i din pipeline.
Mer information finns i Publicera symboler.
Felsöka
Om du kan skapa projektet på utvecklingsdatorn, men du har problem med att skapa det 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. När en ny version av .NET Core SDK har släppts kan det ta några veckor att distribuera till alla Azure Pipelines-datacenter. Du behöver inte vänta tills distributionen har slutförts. Du kan 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.
Kontrollera .NET Core SDK-versionerna och körningen på utvecklingsdatorn och se till att de matchar agenten. Du kan inkludera ett kommandoradsskript
dotnet --version
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 den nyare versionen av .NET Core SDK.Du kanske använder viss logik i Visual Studio IDE som inte är kodad i din pipeline. Azure Pipelines kör vart och ett av de kommandon som du anger i aktiviteterna en efter en i en ny process. Granska loggarna från pipelines-versionen för att se de exakta kommandon som kördes som en del av bygget. Upprepa samma kommandon i samma ordning på utvecklingsdatorn för att hitta problemet.
Om du har en blandad lösning som innehåller vissa .NET Core-projekt och vissa .NET Framework-projekt bör du också använda NuGet-uppgiften för att återställa paket som anges i
packages.config
filer. Lägg till uppgiften MSBuild eller Visual Studio Build för att skapa .NET Framework-projekten.Dina versioner kan misslyckas tillfälligt när du återställer paket: antingen NuGet.org har problem eller om det finns nätverksproblem mellan Azure-datacentret och NuGet.org. Du kan utforska om användning av Azure Artifacts med NuGet.org som uppströmskälla förbättrar tillförlitligheten för dina versioner, eftersom det inte finns i vår kontroll.
Ibland, när en ny version av .NET Core SDK eller Visual Studio distribueras, kan bygget gå sönder. Till exempel levereras en nyare version eller funktion av NuGet-verktyget med SDK:n. Om du vill isolera det här problemet använder du .NET Core Tool Installer-uppgiften för att ange den version av .NET Core SDK som används i din version.
Vanliga frågor
F: Var kan jag lära mig mer om Azure Artifacts?
S: Pakethantering i Azure Artifacts
F: Var kan jag lära mig mer om .NET Core-kommandon?
F: Var kan jag lära mig mer om att köra tester i min lösning?
S: Enhetstestning i .NET Core-projekt