Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Usare una pipeline di Azure per compilare, testare e distribuire automaticamente i progetti .NET Core. Questo articolo illustra come eseguire le attività seguenti:
- Configurare l'ambiente di compilazione con agenti autogestiti.
- Ripristina le dipendenze, compila il tuo progetto e testa con l'attività .NET Core (DotNetCoreCLI@2) o script.
- Testa il tuo codice e usa l'attività pubblica code coverage per pubblicare i risultati del code coverage.
- Impacchettare e consegnare l'output di compilazione a:
- la tua pipeline.
- un NuGet feed.
- un
.zip
file per distribuire un'applicazione web su Azure.
- Configurare l'ambiente di compilazione con agenti ospitati da Microsoft o self-hosted.
- Ripristina le dipendenze, compila il tuo progetto e testa con l'attività .NET Core (DotNetCoreCLI@2) o script.
- Testa il tuo codice e usa l'attività pubblica code coverage per pubblicare i risultati del code coverage.
- Impacchettare e consegnare l'output di compilazione a:
- la tua pipeline.
- un NuGet feed.
- un
.zip
file per distribuire un'applicazione web su Azure.
Nota
Per informazioni su progetti .NET Framework, vedere Creare app ASP.NET con .NET Framework.
Prerequisiti
Prodotto | Requisiti |
---|---|
Azure DevOps | - Un'organizzazione e un progetto di Azure DevOps.
Crearne una gratuitamente. Autorizzazioni - : - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators. - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio . - La possibilità di eseguire pipeline su agenti ospitati da Microsoft. È possibile acquistare un processo in parallelo oppure richiedere un livello gratuito. |
GitHub | - Un account GitHub. |
Prodotto | Requisiti |
---|---|
Azure DevOps | - Raccolta di Azure DevOps. Autorizzazioni - : - Per concedere l'accesso a tutte le pipeline nel progetto: devi essere membro del gruppo Project Administrators. - Per creare connessioni al servizio: è necessario disporre del ruolo di Administrator o Creator per le connessioni al servizio . |
GitHub | - Un account GitHub. |
Crea la tua prima pipeline
Sei nuovo su Azure Pipelines? In tal caso, è consigliabile provare prima la sezione seguente.
Creare un progetto .NET
Se non si ha un progetto .NET da usare, crearne uno nuovo nel sistema locale. Per iniziare, installare .NET 8.0 SDK .
Aprire una finestra del terminale.
Crea una directory del progetto ed entra in essa.
Creare una nuova app Web .NET 8.
dotnet new webapp -f net8.0
Dalla stessa sessione del terminale eseguire l'applicazione in locale usando il
dotnet run
comando dalla directory del progetto.dotnet run
Quando l'applicazione viene avviata, premere Ctrl-C per arrestarla.
Creare un repository Git e connetterlo a GitHub
Dalla directory del progetto creare un repository Git locale ed eseguire il commit del codice dell'applicazione nel ramo principale.
Creare un progetto DevOps
Creare un nuovo progetto Azure DevOps per ospitare la pipeline.
- In un browser, vai su dev.azure.com e accedi.
- Selezionare l'organizzazione.
- Creare un nuovo progetto selezionando Nuovo progetto o Crea progetto se si crea il primo progetto nell'organizzazione.
- Immettere il nome del progetto.
- Seleziona la Visibilità per il tuo progetto.
- Seleziona Crea.
- In un browser, vai al tuo server di Azure DevOps.
- Selezionare la raccolta.
- Creare un nuovo progetto selezionando Nuovo progetto o Crea progetto se si crea il primo progetto nella raccolta.
- Immettere il nome del progetto.
- Seleziona la Visibilità per il tuo progetto.
- Seleziona Crea.
Configurare l'ambiente di compilazione
Le compilazioni vengono eseguite su agenti self-hosted. Assicurarsi di disporre della versione necessaria di .NET Core SDK e del runtime installati negli agenti. È possibile compilare i progetti .NET Core usando .NET Core SDK e il runtime in Windows, Linux, macOS e Docker.
È possibile installare una versione specifica di .NET SDK aggiungendo l'attività UseDotNet@2 nel file YAML della pipeline o aggiungendo l'attività alla pipeline usando l'editor classico.
Frammento di codice YAML di esempio:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Le compilazioni vengono eseguite su agenti ospitati da Microsoft. È possibile compilare i progetti .NET Core usando .NET Core SDK e il runtime in Windows, Linux e macOS.
In alternativa, è possibile usare un agente ospitato autonomamente. Con un agente self-hosted è possibile usare gli SDK privati o di anteprima non ufficialmente supportati da Azure DevOps Services ed eseguire compilazioni incrementali.
Creare la pipeline
È possibile usare l'editor della pipeline YAML o l'editor classico per creare la pipeline. Per usare l'editor classico, selezionare Usa l'editor classico.
Creare una nuova pipeline e selezionare l'origine
Accedere all'organizzazione di Azure DevOps e passare al progetto.
Passare a Pipeline e quindi selezionare Nuova pipeline o Crea pipeline se si crea la prima pipeline.
Eseguire i passaggi della procedura guidata selezionando prima di tutto GitHub come posizione del codice sorgente.
Si potrebbe essere reindirizzati a GitHub per l'accesso. In questo caso, immettere le credenziali di GitHub.
Quando si vede l’elenco dei repository, selezionarne uno.
È possibile che si venga reindirizzati a GitHub per installare l'app Azure Pipelines. In tal caso, selezionare Approva e installa.
Configura la pipeline
Quando viene visualizzata la scheda Configura , selezionare Mostra altro e selezionare il modello di pipeline ASP.NET Core nell'elenco.
Esamina la tua nuova pipeline per vedere cosa fa il file YAML.
È possibile personalizzare il file YAML per i requisiti. Ad esempio, è possibile specificare il pool di agenti o aggiungere un'attività per installare .NET SDK diverso.
Salvare ed eseguire la pipeline
Quando si è pronti, selezionare Salva ed esegui.
Facoltativamente, è possibile modificare il messaggio di commit.
Commita il nuovo file azure-pipelines.yml nel tuo repository selezionando Salva ed esegui.
Per guardare il flusso di lavoro in azione, selezionare il processo nella sezione Processi.
Creare ed eseguire una pipeline
È possibile creare una pipeline usando l'editor della pipeline YAML o l'editor classico.
- Passare al progetto e selezionare Pipeline.
- Selezionare Crea pipeline o Nuova pipeline se si crea la prima pipeline per questo progetto.
Selezionare l'origine
Selezionare il repository di origine. Per questo esempio, usare GitHub Enterprise Server.
- Immettere l'URL per l'account GitHub. Ad esempio:
https://github.com/<username>
. - Immettere il token di accesso personale per l'account GitHub.
- Immettere un nome di connessione al servizio. Ad esempio:
my-github
. - Seleziona Crea.
- Immettere l'URL per l'account GitHub. Ad esempio:
Seleziona il repository GitHub.
Configura il flusso di lavoro
Nella scheda Configura selezionare Mostra altro e selezionare il modello di pipeline ASP.NET Core nell'elenco.
Esamina la tua nuova pipeline per vedere cosa fa il file YAML.
È possibile personalizzare il file YAML per i requisiti. Ad esempio, è possibile aggiungere attività per installare un SDK .NET o per testare e pubblicare il progetto.
Salvare ed eseguire la pipeline
Seleziona Salva ed Esegui.
Per eseguire il commit del nuovo file azure-pipelines.yml nel repository, modificare il messaggio di commit in base alle esigenze e selezionare Salva ed esegui.
Per guardare il flusso di lavoro in azione, selezionare il processo nella sezione Processi.
È ora disponibile una pipeline di lavoro pronta per la personalizzazione. Continua a leggere per scoprire alcuni dei modi comuni per personalizzare la pipeline.
Ambiente di compilazione
Azure Pipelines utilizza agenti autogestiti per compilare i progetti .NET Core. Assicurarsi di disporre della versione necessaria di .NET Core SDK e del runtime installati negli agenti. È possibile compilare i progetti .NET Core usando .NET Core SDK e il runtime in Windows, Linux, macOS e Docker.
Ad esempio, per selezionare un pool e le funzionalità dell'agente nel file YAML della pipeline:
È possibile selezionare il pool di agenti e l'agente per il lavoro di compilazione. Gli agenti vengono specificati in base alle relative funzionalità.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
È possibile installare una versione specifica di .NET SDK aggiungendo l'attività UseDotNet@2 nella pipeline. Tenere presente che per gli agenti eseguiti in sistemi fisici, l'installazione di SDK e strumenti tramite la pipeline modifica l'ambiente di compilazione nell'host dell'agente.
Per installare un SDK più recente, impostare performMultiLevelLookup
su true
nel frammento di codice seguente:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
È possibile usare Azure Pipelines per compilare i progetti .NET Core in Windows, Linux o macOS senza la necessità di configurare l'infrastruttura.
Ad esempio, Ubuntu è impostato qui nel file YAML della pipeline.
pool:
vmImage: 'ubuntu-latest'
Per un elenco completo delle immagini e altri esempi di configurazione, vedere Agenti ospitati da Microsoft.
Gli agenti ospitati da Microsoft in Azure Pipelines includono diverse versioni preinstallate degli SDK .NET Core supportati. Gli agenti ospitati da Microsoft non includono alcune delle versioni precedenti di .NET Core SDK. Inoltre, in genere non includono versioni non definitive. Se sono necessarie queste versioni dell'SDK negli agenti ospitati da Microsoft, installarle usando l'attività UseDotNet@2 .
Ad esempio, per installare 5.0.x SDK, aggiungere il frammento di codice seguente:
steps:
- task: UseDotNet@2
inputs:
version: '5.x'
Gli agenti Windows includono già un runtime .NET Core. Per installare un SDK più recente, impostare performMultiLevelLookup
su true
nel frammento di codice seguente:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Suggerimento
Per risparmiare sui costi di esecuzione del programma di installazione dello strumento, puoi configurare un agente self-hosted Linux, macOS o Windows. È anche possibile usare agenti self-hosted per risparmiare tempo se si dispone di un repository di grandi dimensioni o si eseguono compilazioni incrementali. Un agente self-hosted consente anche di usare gli SDK che non sono inclusi in Azure DevOps o sono disponibili solo negli ambienti aziendali o locali.
Ripristinare le dipendenze
NuGet è un modo comune per dipendere da codice che non sviluppi tu stesso. È possibile scaricare pacchetti NuGet e strumenti specifici del progetto specificati nel file di progetto eseguendo il dotnet restore
comando tramite l'attività .NET Core o direttamente in uno script nella pipeline. Per altre informazioni, vedere Attività .NET Core (DotNetCoreCLI@2).For more information, see .NET Core task (DotNetCoreCLI@2).
È possibile scaricare pacchetti NuGet da Azure Artifacts, NuGet.org o da un altro repository NuGet esterno o interno. L'attività .NET Core è particolarmente utile per ripristinare i pacchetti dai feed NuGet autenticati. Se il feed si trova nello stesso progetto della pipeline, non è necessario eseguire l'autenticazione.
Questa pipeline usa un feed di Azure Artifact per dotnet restore
nell'attività DotNetCoreCLI@2 .
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)'
Il comando dotnet restore
usa il pacchetto NuGet.exe
incluso nel .NET Core SDK e può ripristinare soltanto i pacchetti specificati nei file di progetto .csproj
.NET Core.
Se nella soluzione è presente anche un progetto Microsoft .NET Framework o si usa package.json
per specificare le dipendenze, usare l'attività NuGet per ripristinare tali dipendenze.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
Nota
Se si usa Ubuntu 24.04 o versione successiva, è necessario usare l'attività NuGetAuthenticate
con l'interfaccia della riga di comando di .NET anziché l'attività NuGetCommand@2
. Per altre informazioni, vedere Supporto per le immagini ospitate di Ubuntu più recenti.
In .NET Core SDK versione 2.0 e successive i pacchetti vengono ripristinati automaticamente quando si eseguono comandi come dotnet build
. Tuttavia, è comunque necessario usare l'attività .NET Core per ripristinare i pacchetti se si usa un feed autenticato.
Le compilazioni possono non riuscire a causa di problemi di connessione quando si ripristinano i pacchetti da NuGet.org. È possibile usare Azure Artifacts con origini upstream per memorizzare nella cache i pacchetti. Le credenziali della pipeline vengono usate automaticamente quando si connette ad Azure Artifacts. Queste credenziali vengono in genere derivate dall'account Project Collection Build Service. Per altre informazioni sull'uso di Azure Artifacts per memorizzare nella cache i pacchetti NuGet, vedere Connettersi ai feed di Azure Artifact.
Per specificare un repository NuGet, inserire l'URL in un NuGet.config
file nel repository. Se il feed è autenticato, gestire le credenziali creando una connessione al servizio NuGet nella scheda Servizi in Impostazioni progetto.
Quando si usano agenti ospitati da Microsoft, si ottiene un nuovo computer ogni volta che si esegue una compilazione, che ripristina i pacchetti con ogni esecuzione. Il ripristino può richiedere una quantità significativa di tempo. Per attenuare il problema, è possibile usare Azure Artifacts o un agente self-hosted con il vantaggio di usare la cache dei pacchetti.
Per altre informazioni sulle connessioni al servizio NuGet, vedere Pubblicare nei feed NuGet.
Ripristinare i pacchetti da un feed esterno
Eseguire le operazioni seguenti per ripristinare i pacchetti da un feed esterno.
È possibile aggiungere il comando di ripristino alla pipeline usando l'editor della pipeline YAML inserendo direttamente il frammento di codice seguente nel azure-pipelines.yml
file o usando l'assistente attività per aggiungere l'attività .NET Core .
# 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>
Sostituire il segnaposto< con il >nome della connessione del servizio.
Per usare l'assistente delle attività:
Per aggiungere un'attività di compilazione usando l'assistente attività, seguire questi passaggi:
Passare alla posizione nel file YAML in cui si desidera inserire l'attività.
Dal catalogo attività, selezionare .NET Core.
Selezionare il comando di ripristino dall'elenco a discesa Comando.
Nel campo Percorso progetto immettere il percorso dei
.csproj
file.Selezionare Aggiungi.
Selezionare Salva per eseguire il commit della modifica.
Nota
Assicurarsi che il feed personalizzato sia specificato nel NuGet.config
file e che le credenziali siano specificate nella connessione al servizio NuGet.
Compilare il progetto
Compilare i progetti .NET Core eseguendo il dotnet build
comando . È possibile aggiungere il comando alla pipeline come script della riga di comando oppure utilizzando il task .NET Core.
Compilare con il task .NET Core
Esempio YAML per costruire utilizzando l'attività di DotNetCoreCLI@2:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)' # Update this to match your needs
È possibile aggiungere un'attività di compilazione usando l'editor della pipeline YAML modificando direttamente il file o aggiungendo l'attività .NET Core tramite l'assistente per le attività.
Per aggiungere un'attività di compilazione usando l'assistente attività, seguire questa procedura:
Passare alla posizione nel file YAML in cui si desidera inserire l'attività.
Dal catalogo attività, selezionare .NET Core.
Selezionare il comando di compilazione dall'elenco Comando a discesa.
Nel campo Percorso progetto immettere il percorso dei
.csproj
file.Selezionare Aggiungi.
Selezionare Salva per eseguire il commit della modifica.
Compilare .NET Core con uno script della riga di comando
Esempio YAML per la compilazione con dotnet build
come script:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
È possibile aggiungere un'attività di compilazione usando l'editor della pipeline YAML modificando direttamente il file o aggiungendo l'attività Riga di comando.
Per aggiungere l'attività Riga di comando, seguire questa procedura:
Passare alla posizione nel file YAML in cui si desidera inserire l'attività.
Selezionare la Linea di Comando dal catalogo attività.
Facoltativamente, aggiungere un nome di visualizzazione.
Immettere il
dotnet build
comando con i parametri. Ad esempio:dotnet build --configuration $(buildConfiguration)
.Immettere il percorso del
.csproj
file come directory di lavoro.Selezionare Aggiungi.
Selezionare Salva per eseguire il commit della modifica.
Aggiungere comandi .NET SDK alla pipeline
È possibile aggiungere comandi .NET SDK al progetto come script o usando l'attività .NET Core. L'attività .NET Core (DotNetCoreCLI@2) consente di aggiungere facilmente comandi CLI dotnet alla pipeline. È possibile aggiungere attività .NET Core modificando il file YAML o usando l'editor classico.
Aggiungere un comando CLI di .NET con l'attività .NET Core
Per aggiungere un comando dell'interfaccia della riga di comando di .NET Core usando l'editor della pipeline YAML, seguire questa procedura:
Passare alla posizione nel file YAML in cui si desidera inserire l'attività.
Selezionare .NET Core dal catalogo attività.
Selezionare il comando da eseguire.
Configurare tutte le opzioni necessarie.
Selezionare Aggiungi.
Selezionare Salva per eseguire il commit della modifica.
Aggiungere un comando dell'interfaccia della riga di comando di .NET Core in uno script
È possibile aggiungere comandi dell'interfaccia della riga di comando di .NET Core come un script
nel tuo file azure-pipelines.yml
.
Esempio:
steps:
# ...
- script: dotnet test <test-project>
Installare uno strumento
Per installare uno strumento globale .NET Core come dotnetsay nella compilazione in esecuzione in Windows, seguire questa procedura:
- Aggiungere l'attività .NET Core e impostare le proprietà seguenti:
-
Comando: personalizzato.
- Percorso dei progetti: lasciare vuoto.
- Comando personalizzato: strumento.
-
Argomenti:
install -g dotnetsay
.
-
Comando: personalizzato.
- Per eseguire lo strumento, aggiungere una riga di comando e impostare le proprietà seguenti:
-
Script:
dotnetsay
.
-
Script:
Esecuzione dei test
Quando sono presenti progetti di test nel repository, è possibile usare l'attività .NET Core per eseguire unit test usando framework di test come MSTest, xUnit e NUnit. Il progetto di test deve fare riferimento a Microsoft.NET.Test.SDK versione 15.8.0 o successiva. I risultati dei test vengono pubblicati automaticamente nel servizio. Questi risultati sono disponibili nel riepilogo della compilazione e possono essere usati per la risoluzione dei problemi relativi ai test non riusciti e all'analisi dei tempi di test.
È possibile aggiungere un'attività di test alla pipeline usando l'attività DotNetCoreCLI@2 o aggiungere il frammento di codice seguente al azure-pipelines.yml
file:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Quando si usa l'editor di attività .NET Core , impostare Comando per testare e Percorso per i progetti deve fare riferimento ai progetti di test nella soluzione.
In alternativa, è possibile eseguire il dotnet test
comando con un logger specifico e quindi usare l'attività Pubblica risultati test:
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'
Raccogliere copertura del codice
Quando si sviluppa sulla piattaforma Windows, è possibile raccogliere le metriche di copertura del codice utilizzando il raccoglitore di dati integrato. Il progetto di test deve fare riferimento a Microsoft.NET.Test.SDK versione 15.8.0 o successiva.
Quando si usa l'attività .NET Core per eseguire test, i dati di copertura vengono pubblicati automaticamente nel server. Il .coverage
file può essere scaricato dal riepilogo della compilazione per la visualizzazione in Visual Studio.
Aggiungere il frammento di codice seguente al azure-pipelines.yml
file:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'
Per aggiungere l'attività .NET Core tramite l'editor attività:
Aggiungere l'attività .NET Core al processo di compilazione e impostare le proprietà seguenti:
- Comando: test.
- Percorso dei progetti: fare riferimento ai progetti di test nella soluzione.
-
Argomenti:
--configuration $(BuildConfiguration) --collect "Code Coverage"
.
Assicurarsi che l'opzione Pubblica risultati test rimanga selezionata.
Se si sceglie di eseguire il comando dotnet test
, specificare il logger dei risultati del test e le opzioni di copertura. Quindi, usa l'attività Pubblica Risultati del Test:
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'
Raccogliere le metriche di code coverage con Coverlet
Se si sta creando in Linux o macOS, è possibile usare Coverlet o uno strumento simile per raccogliere le metriche di code coverage.
È possibile pubblicare i risultati della copertura del codice sul server con l'attività Pubblica i risultati della copertura del codice (PublishCodeCoverageResults@2). Lo strumento di copertura deve essere configurato per generare risultati in formato Cobertura o JaCoCo.
Per eseguire test e pubblicare code coverage con Coverlet, eseguire le attività seguenti:
Aggiungere un riferimento al pacchetto NuGet
coverlet.collector
.Aggiungere il frammento di codice seguente al
azure-pipelines.yml
file:- 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@2 displayName: 'Publish code coverage report' inputs: codeCoverageTool: 'Cobertura' summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Confeziona e consegna il tuo codice
È possibile pubblicare i tuoi artefatti di compilazione tramite:
- Pubblicazione in Azure Pipelines.
- Pubblicazione di pacchetti in Azure Artifacts.
- Creazione di un pacchetto NuGet e pubblicazione nel feed NuGet.
- Creazione di un archivio .zip per distribuire l'app Web.
Pubblicare elementi in Azure Pipelines
Per pubblicare l'output del build .NET nella tua pipeline, esegui le seguenti attività:
- Eseguire
dotnet publish --output $(Build.ArtifactStagingDirectory)
nell'interfaccia della riga di comando di .NET o aggiungere l'attività DotNetCoreCLI@2 con il comando publish. - Pubblica l'artefatto della pipeline usando l'attività Pubblica artefatto della pipeline.
Aggiungere il frammento di codice seguente al azure-pipelines.yml
file:
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'
Nota
L'attività DotNetCoreCLI@2 ha un publishWebProjects
input impostato su true per impostazione predefinita. Questa attività pubblica tutti i progetti Web nel repository per impostazione predefinita. Puoi trovare più aiuto e informazioni sull'attività open source su GitHub.
Per copiare altri file nella directory di compilazione prima della pubblicazione, usare l'attività Copia file (CopyFile@2).
Per pubblicare l'output del build .NET nella tua pipeline, esegui le seguenti attività:
- Eseguire
dotnet publish --output $(Build.ArtifactStagingDirectory)
sull'interfaccia a riga di comando o aggiungere il task DotNetCoreCLI@2 con il comando publish. - Pubblica l'artefatto di compilazione usando l'attività Publish build artifact (PublishBuildArtifacts@1).
Per pubblicare gli artefatti di compilazione come file .zip, aggiungere il frammento di codice seguente al azure-pipelines.yml
file:
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'
Per altre informazioni, vedere Pubblicare e scaricare gli artefatti di compilazione.
Pubblicare in un feed NuGet
Per creare un pacchetto NuGet e pubblicarlo nel feed NuGet, aggiungere il frammento di codice seguente:
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
Nota
L'attività NuGetAuthenticate@1 non supporta l'autenticazione della chiave API NuGet. Se si usa una chiave API di NuGet, usare l'attività NuGetCommand@2 con l'input impostato su command
con l'argomento push
--api-key
. Ad esempio: dotnet nuget push --api-key $(NuGetApiKey)
.
Per altre informazioni sul controllo delle versioni e sulla pubblicazione di pacchetti NuGet, vedere Pubblicare nei feed NuGet.
Pubblicare un pacchetto NuGet in Azure Artifacts
È possibile pubblicare i pacchetti NuGet nel feed di Azure Artifacts usando NuGetCommand@2 per fare il push nel feed di Azure Artifacts. Ad esempio, vedere Pubblicare pacchetti NuGet con Azure Pipelines.
Distribuire un'app Web
Per creare un archivio di file .zip pronto per la pubblicazione in un'app Web, aggiungere il frammento di codice seguente:
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
Per pubblicare questo archivio in un'app Web, vedere Distribuzione di Azure App Web.
Creare un'immagine ed eseguire il push nel registro di container
È anche possibile creare un'immagine per l'app ed eseguirne il push in un registro di container.
Pubblicare i simboli
È possibile usare l'attività PublishSymbols@2 per pubblicare simboli in un server di simboli di Azure Artifacts o in una condivisione file.
Ad esempio, per pubblicare simboli in una condivisione file, aggiungere il frammento di codice seguente al azure-pipelines.yml
file:
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\server\shareName'
Quando si usa l'editor classico, selezionare Pubblica i simboli degli indici delle origini dal catalogo attività da aggiungere alla pipeline.
Per altre informazioni, vedere Pubblicare simboli.
Risoluzione dei problemi
Se è possibile compilare il progetto nel computer di sviluppo, ma si verificano problemi durante la compilazione in Azure Pipelines, esplorare le possibili cause e le azioni correttive seguenti:
- Le versioni non definitive di .NET Core SDK non sono installate negli agenti ospitati da Microsoft. Dopo il rilascio di una nuova versione di .NET Core SDK, l'implementazione in tutti i data center di Azure Pipelines può richiedere alcune settimane. Non è necessario attendere il completamento di questa implementazione. È possibile usare l'attività Usa .NET Core per installare la versione di .NET Core SDK desiderata negli agenti ospitati da Microsoft.
Controllare le versioni e il runtime di .NET Core SDK nel computer di sviluppo e assicurarsi che corrispondano all'agente. È possibile includere uno script
dotnet --version
della riga di comando nella pipeline per stampare la versione di .NET Core SDK. Usare il programma di installazione dello strumento .NET Core per distribuire la stessa versione nell'agente oppure aggiornare i progetti e il computer di sviluppo alla versione più recente di .NET Core SDK.È possibile usare una logica nell'IDE di Visual Studio non codificata nella pipeline. Azure Pipelines esegue ognuno dei comandi specificati nelle attività una dopo l'altra in un nuovo processo. Esaminare i log dalla compilazione delle pipeline per visualizzare i comandi esatti eseguiti come parte della compilazione. Per individuare il problema, ripetere gli stessi comandi nello stesso ordine nel computer di sviluppo.
Se si dispone di una soluzione mista che include alcuni progetti .NET Core e alcuni progetti .NET Framework, è consigliabile usare anche l'attività NuGet per ripristinare i pacchetti specificati nei
packages.config
file. Aggiungere l'attività MSBuild o Visual Studio Build per compilare i progetti .NET Framework.Le compilazioni potrebbero non riuscire in modo intermittente durante il ripristino dei pacchetti: o NuGet.org sta avendo problemi o si verificano problemi di rete tra il data center di Azure e NuGet.org. È possibile esaminare se l'uso di Azure Artifacts con NuGet.org come origine upstream migliora l'affidabilità delle compilazioni, poiché non è sotto il nostro controllo.
In alcuni casi, quando viene implementata una nuova versione di .NET Core SDK o Visual Studio, la compilazione potrebbe interrompersi. Ad esempio, una versione o una funzionalità più recente dello strumento NuGet viene fornita con l'SDK potrebbe interrompere la compilazione. Per isolare questo problema, usa l'attività Strumento di installazione di strumenti .NET Core per specificare la versione dell'SDK .NET Core utilizzata nella compilazione.
Domande frequenti
D: Dove è possibile ottenere altre informazioni su Azure Artifacts?
D: Dove è possibile ottenere altre informazioni sui comandi di .NET Core?
D: Dove è possibile ottenere altre informazioni sull'esecuzione dei test nella soluzione?
R: Unit testing nei progetti .NET Core