共用方式為


建置、測試及部署 .NET Core 專案

Azure DevOps 服務 |Azure DevOps Server |Azure DevOps Server 2022 |Azure DevOps Server 2020

本文說明如何使用 Azure Pipelines 來處理 .NET Core 專案。 本文將逐步引導您完成下列工作:

  • 建立 .NET Core Web 應用程式,並將其上傳至 GitHub 存放庫。
  • 建立 Azure DevOps 專案和 Azure Pipelines 管線來建置專案。
  • 使用自我裝載的代理程式設定組建環境。
  • 還原相依性、建置您的專案,並使用 .NET CoreDotNetCoreCLI@2) 工作或腳本進行測試。
  • 使用 .NET CoreDotNetCoreCLI@2) 工作,將其他 .NET SDK 命令新增至管線。
  • 使用 [發佈程式代碼涵蓋範圍結果 ] 工作Publish code coverage results v2來發佈程式代碼涵蓋範圍結果。
  • 封裝並傳遞組建輸出至管線、NuGet 摘要、ZIP 封存或其他目標。
  • 建立 .NET Core Web 應用程式,並將其上傳至 GitHub 存放庫。
  • 建立 Azure DevOps 專案和 Azure Pipelines 管線來建置專案。
  • 使用Microsoft裝載或自我裝載的代理程式來設定組建環境。
  • 還原相依性、建置您的專案,並使用 .NET CoreDotNetCoreCLI@2) 工作或腳本進行測試。
  • 使用 .NET CoreDotNetCoreCLI@2) 工作,將其他 .NET SDK 命令新增至管線。
  • 使用 [發佈程式代碼涵蓋範圍結果 ] 工作Publish code coverage results v2來發佈程式代碼涵蓋範圍結果。
  • 封裝並傳遞組建輸出至管線、NuGet 摘要、ZIP 封存或其他目標。

注意

若要使用 .NET Framework 專案,請參閱 使用 .NET Framework 建置 ASP.NET 應用程式

必要條件

若要完成本文中的所有程式,您需要下列必要條件:

  • Azure DevOps 組織。 您可以免費建立一個訂用帳戶
  • 組織 專案管理員群組中的成員資格,讓您可以建立 Azure DevOps 專案,並將專案存取權授與管線。 Azure DevOps 組織擁有者會自動擁有此成員資格。
  • 組織中的 Azure DevOps 專案。 在 Azure DevOps中建立專案。
  • 藉由要求免費層的平行作業,在Microsoft裝載的代理程式上執行管線的能力。 此要求可能需要數個工作天才能處理。 如需詳細資訊,請參閱設定和支付平行作業的費用
  • 服務連線系統管理員建立者角色,您可以指派為專案管理員。
  • GitHub 帳戶和存放庫。

若要完成本文中的所有程式,您需要下列必要條件:

  • Azure DevOps 專案集合。
  • 在組織中建立的 Azure DevOps 專案。 如需指示,請參閱 在 Azure DevOps 中建立專案
  • 專案管理員群組中的成員資格,因此您可以建立 Azure DevOps 專案,並將專案存取權授與管線。 Azure DevOps 組織擁有者會自動擁有此成員資格。
  • 服務連線系統管理員建立者角色,您可以指派為專案管理員。
  • GitHub 帳戶和存放庫。

建立 .NET 專案並將它上傳至 GitHub

如果您想要在 GitHub 存放庫中使用 .NET 專案,您可以略過本節。

如果您沒有要使用的 .NET 專案,請在本機電腦上建立新的專案,如下所示:

  1. 安裝 .NET 8.0 SDK,或確定已安裝它。
  2. 開啟本機電腦上的終端機視窗。
  3. 建立專案目錄並瀏覽到該目錄。
  4. 執行 dotnet new webapp -f net8.0來建立新的 .NET 8 Web 應用程式。
  5. 使用 dotnet run在本機建置並執行應用程式。
  6. 當應用程式啟動時,請按 Ctrl+C 將其關機。
  7. 將本機項目上傳或連線到您的 GitHub 存放庫。

建立管線

如果您有要使用的管線,您可以略過本節。 否則,您可以使用 YAML 管線編輯器或傳統編輯器來建立管線,如下所示:

  1. 在您的 Azure DevOps 專案中,從左側導覽功能表中選取 [管線 ]。

  2. 如果此管線是專案中的第一個管線,請選取 [ 新增管線 ] 或 [ 建立管線 ]。

  3. 在 [ 在哪裡] 程式代碼 畫面上,選取 [GitHub]。

  4. 系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。

  5. 在 [ 選取存放庫] 畫面上,選取您的 .NET 應用程式位於的存放庫。

  6. 系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果發生此情況,請選取 [核准並安裝]

  1. 在 [ 設定] 索引標籤上,選取 [ 顯示更多 ],然後從清單中選取 [ASP.NET Core 管線範本]。 此範本提供本文描述的許多步驟和設定。

    您也可以在 [設定] 索引卷標上選取 [入門管線],以從最少管線開始,並自行新增步驟和設定。

  2. 在 [ 檢閱] 索引標籤上,檢查 YAML 程式代碼。 您可以自訂檔案以符合您的需求。 例如,您可以指定不同的代理程式集區,或新增工作來安裝不同的 .NET SDK。

  1. 在您的 Azure DevOps 專案中,從左側導覽功能表中選取 [管線 ]。

  2. 如果此管線是專案中的第一個管線,請選取 [ 新增管線 ] 或 [ 建立管線 ]。

  3. 選取您的來源存放庫類型。 在此範例中,請使用 GitHub Enterprise Server

  4. 在下一個畫面上,輸入下列資訊:

    • GitHub 帳戶的 URL,例如 https://github.com/myname
    • 您的 GitHub 個人存取令牌 (PAT)。
    • 服務連線名稱,例如 my-github
  5. 選擇 建立

  6. 選取您的 GitHub 存放庫。

  7. 在 [ 設定] 索引標籤上,選取 [顯示更多 ],然後從清單中選取 [ASP.NET 核心 管線範本]。 此範本提供本文描述的許多步驟和設定。

  8. 檢查新的 YAML 管線程式代碼。 您可以自訂 YAML 檔案以符合您的需求。 例如,您可以新增工作 來安裝不同的 .NET SDK ,或測試及發佈您的專案。

  1. 當您準備好時,請選取 [儲存並執行]

    顯示新 YAML 管線中 [儲存並執行] 按鈕的螢幕快照。

  2. 選擇性地編輯 認可訊息,然後選取 [ 儲存並再次執行 ]。

  3. 在 [ 摘要] 索引標籤上,選取 [ 作業 ] 區段中的作業,以監看管線的運作情形。

您現在已有可自定義的工作管線。

設定組建環境

Azure Pipelines 會使用 自我裝載的代理程式 來建置 .NET Core 專案。 您可以在 WindowsLinuxmacOSDocker 代理程式上使用 .NET Core SDK 和運行時間。 請確定您已在代理程式上安裝必要的 .NET Core SDK 和執行時間版本。

若要安裝特定版本的 .NET SDK,請將工作 UseDotNet@2 新增至 YAML 管線檔案,或在傳統編輯器中使用 .NET Core 工作。

注意

針對在實體系統上執行的代理程式,透過管線安裝 SDK 和工具會改變代理程式主機上的組建環境。

下列範例 YAML 代碼段會安裝 .NET SDK 8.0.x:

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

若要安裝較新的 SDK,請將 設定 performMultiLevelLookuptrue

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

您可以為您的建置作業選擇代理程式集區和代理程式。 您也可以根據代理程式的功能來指定代理程式。 例如,下列 YAML 管線代碼段會選取集區和代理程式功能。

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

您可以使用適用於 Windows、Linux 或 macOS 的 .NET Core SDK 和運行時間來建置 .NET Core 專案。 根據預設,您的組建會在 Microsoft裝載的代理程序上執行,因此您不需要設定基礎結構。

Azure Pipelines Microsoft裝載的代理程式包含數個預安裝的 .NET Core SDK 版本。 如需可用映像和組態範例的完整清單,請參閱 Microsoft裝載的代理程式

下列 YAML 管線代碼段會設定代理程式集區的 Ubuntu OS。

pool:
  vmImage: 'ubuntu-latest' 

Microsoft裝載的代理程式不包含一些舊版的 .NET Core SDK,而且通常不包含發行前版本。 如果您需要Microsoft裝載代理程式上的這些 SDK 版本,您可以使用 Use DotNetUseDotNet@2) 工作加以安裝。

例如,下列程式代碼會安裝 .NET 5.0.x SDK:

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

Windows 代理程式已經包含 .NET Core 執行階段。 若要安裝較新的 SDK,請將 設定 performMultiLevelLookuptrue ,如下列代碼段所示:

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

自行架設的代理程式

或者,您可以使用 自我裝載代理程式 來建置 .NET Core 專案。 您可以設定 LinuxmacOSWindows 自我裝載代理程式。

自我載入的代理程式可讓您:

  • 避免執行 UseDotNet@2 工具安裝程式的成本。
  • 如果您有大型存放庫,請減少建置時間。
  • 執行累加組建。
  • 使用Microsoft不支援的預覽或私人 SDK。
  • 請只在公司或內部部署環境中使用 SDK。

如需詳細資訊,請參閱 自我托管代理

還原相依性

NuGet 套件是專案相依於您未建置的程式代碼的一種方式。 您可以透過 dotnet restore.NET Core 工作DotNetCoreCLI@2或管線中的腳本來執行 命令,以下載 NuGet 套件和專案特定工具。 此命令 dotnet restore 會使用與 .NET Core SDK 封裝 的NuGet.exe ,而且只能還原 .NET Core 專案 *.csproj 檔案中指定的套件。

您可以使用 .NET CoreDotNetCoreCLI@2) 工作,從 Azure Artifacts、NuGet.org 或其他已驗證的外部或內部 NuGet 存放庫下載和還原 NuGet 套件。 如果 NuGet 摘要位於與管線相同的專案中,則不需要進行驗證。 如需詳細資訊,請參閱 .NET Core 工作 (DotNetCoreCLI@2)。

當您使用由 Microsoft 託管的代理時,每次執行組建時,都會獲取一台新的虛擬機器,並在每次執行時重新安裝套件。 還原可能需要大量的時間。 若要減輕此問題,請使用 Azure Artifacts 或 自我裝載代理程式 來利用套件快取。

下列管線會使用工作 DotNetCoreCLI@2 來還原 Azure Artifact 摘要。

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

在 .NET Core SDK 2.0 版和更新版本中,當您執行 之類的 dotnet build命令時,套件會自動還原。 如果您使用已驗證的摘要,您仍然需要使用 .NET CoreDotNetCoreCLI@2) 工作來還原套件。

專案設定>管線>連線中建立 NuGet 服務連線,以管理已驗證摘要的認證。 如需 NuGet 服務連線的詳細資訊,請參閱 使用 Azure Pipelines 發佈 NuGet 套件

從 NuGet.org 還原套件

若要從 NuGet.org 還原套件,請更新管線,如下所示。

您可以直接編輯 YAML 程式代碼或使用工作助理,將還原命令新增至管線。

在建置工作之前,將下列代碼段插入azure-pipelines.yml檔案,直接新增 DotNetCoreCLI@2) 工作。

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

若要使用工作助理:

  1. 移至您要插入工作的 YAML 檔案中的位置。
  2. 從工作目錄選取 [.NET Core ]。
  3. 在組態畫面上,從 [命令] 下拉式清單中選取 [還原]。
  4. 在 [ 項目路徑] 或 [方案] 字段中,輸入 *.csproj 檔案的路徑。 您可以將通配符 **/*.csproj 用於所有子資料夾中的所有 *.csproj 檔案。
  5. 若要新增摘要,請確定選取 [摘要],然後選取 [從 NuGet.org 使用套件]。
  6. 選取 [新增]。
  7. 選取 [驗證並儲存],然後選取 [ 儲存 ] 認可變更。

從外部來源還原套件

若要指定外部 NuGet 存放庫,請將 URL 放在存放庫中 的NuGet.config 檔案中。 請確定您的 NuGet.config 檔案中指定了任何自定義摘要,並在 NuGet 服務連線中指定認證。

若要從外部摘要還原套件,請依照上一節中的指示新增工作 restore ,但變更組態設定,如下所示:

在建置工作之前,將下列代碼段插入azure-pipelines.yml檔案,直接新增 DotNetCoreCLI@2) 工作。 將取代 <NuGet service connection> 為您的服務連線名稱。

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>

若要使用工作助理:

  1. 新增 .NET Core 工作,然後在設定畫面上選取 [還原 ],如上述程式所示。
  2. 針對 要新增的摘要選取 [我的 NuGet.config中的 摘要]。
  3. [NuGet.config路徑 ] 底下, 輸入NuGet.config檔案 的路徑,相對於存放庫的根目錄。 您可以選取欄位旁的省略號 ... ,以瀏覽並選取位置。
  4. [此組織/集合外部摘要的認證] 下,選取要用於所選 NuGet.config 檔案中外部登錄的認證。 對於相同組織中的摘要,您可以將此欄位保留空白。 會自動使用組建的認證。

還原 .NET Framework 專案的套件

如果您的方案中也有Microsoft .NET Framework 專案,或使用 package.json 來指定相依性,請使用 NuGetCommand@2 工作來還原這些相依性。

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

注意

針對Ubuntu 24.04或更高版本,您必須使用 NuGetAuthenticate 工作 ,而不是使用 .NET CLI NuGetCommand@2 工作。 如需詳細資訊,請參閱 支援較新的Ubuntu裝載映像

建置您的專案

執行 dotnet build 命令來建置 .NET Core 專案。 您可以使用 .NET CoreDotNetCoreCLI@2) 工作或命令行腳本,將命令新增至管線。

使用 .NET Core 工作

您可以使用 YAML 管線編輯器新增建置工作,方法是直接編輯檔案或使用工作助理。

藉由插入下列代碼段,直接新增 .NET CoreDotNetCoreCLI@2) 工作。 更新 以 arguments 符合您的需求。

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

若要使用工作助理:

  1. 移至您要插入工作的 YAML 檔案中的位置。
  2. 選取 .NET CoreDotNetCoreCLI@2) 工作。
  3. 從 [命令] 下拉式清單中選取 [組建]。
  4. 在 [ 項目路徑] 或 [方案] 字段中,輸入 *.csproj 檔案的路徑。 您可以將通配符 **/*.csproj 用於所有子資料夾中的所有 *.csproj 檔案。
  5. 選取 [新增]。
  6. 選取 [ 儲存] 以認可變更。

使用命令行腳本建置 .NET Core

您也可以使用命令行腳本來建置。

若要直接編輯 YAML 檔案來新增組建命令行,請新增下列程式代碼:

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

您也可以使用工作助理來新增 命令行 工作。

  1. 移至您要插入工作的 YAML 檔案中的位置。
  2. 從清單中選取 [命令行 ] 工作CmdLine@2
  3. 在 [ 腳本] 欄位中,輸入具有參數的 dotnet build 命令。 例如: dotnet build --configuration $(buildConfiguration)
  4. 在 [ 進階>工作目錄] 下,輸入 *.csproj 檔案的路徑作為工作目錄。 如果您將它保留空白,工作目錄預設為 $(Build.SourcesDirectory)
  5. 選取 [新增]。
  6. 選取 [ 儲存] 以認可變更。

將其他 .NET SDK 命令新增至管線

您可以使用 .NET Core 工作DotNetCoreCLI@2或腳本,將其他 .NET SDK 命令新增至管線。

使用 .NET Core 工作新增 .NET CLI 命令

.NET Core (DotNetCoreCLI@2) 工作可讓您輕鬆地將 .NET CLI 命令新增至管線。 您可以編輯 YAML 檔案或使用傳統編輯器來新增 .NET CoreDotNetCoreCLI@2) 工作。

若要在 YAML 管線編輯器中使用工作助理新增 .NET Core 命令,請執行下列步驟:

  1. 移至您要插入工作的 YAML 檔案中的位置。
  2. 從工作目錄選取 [.NET Core ]。
  3. 從 [命令] 欄位中的下拉式清單中選取您想要執行的 命令
  4. 請設定任何所需的選項。
  5. 選取 [新增]。
  6. 選取 [ 儲存] 以認可變更。

在腳本中新增 .NET Core CLI 命令

您可以將 .NET Core CLI 命令新增為 scriptazure-pipelines.yml 檔案中的 。 例如:


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

安裝工具

若要在 Windows 上執行的組建中安裝 .NET Core 全域工具,例如 dotnetsay ,請新增 .NET Core 工作,並在組態中設定下列屬性:

  • 命令自定義
  • 項目路徑:保留空白
  • 自訂命令tool
  • 參數install -g dotnetsay

若要執行此工具,請新增命令列工作,然後在 dotnetsay] 字段中輸入

執行測試

當您在存放庫中有測試專案時,您可以使用 .NET CoreDotNetCoreCLI@2) 工作,使用 MSTest、xUnit 和 NUnit 等測試架構來執行單元測試。 測試項目必須參考 Microsoft.NET.Test.SDK 15.8.0 版或更高版本。

測試結果會自動發佈至服務,您可以在組建摘要中取得。 您可以使用測試結果來針對失敗的測試進行疑難解答,並分析測試時間。

若要將測試工作新增至管線,請將下列代碼段新增至 您的azure-pipelines.yml 檔案:

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

如果您使用工作助理來新增 .NET CoreDotNetCoreCLI@2) 工作,請設定下列屬性:

  • 命令測試
  • 項目路徑:設定為方案中的測試專案
  • 參數--configuration $(BuildConfiguration)

或者,您可以使用特定的記錄器執行 dotnet test 命令,然後使用工作 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'

收集程式代碼涵蓋範圍

在 Windows 平臺上建置時,您可以使用內建涵蓋範圍數據收集器來收集程式代碼涵蓋範圍計量。 測試項目必須參考 Microsoft.NET.Test.SDK 15.8.0 版或更高版本。

當您使用 .NET CoreDotNetCoreCLI@2) 工作來執行測試時,涵蓋範圍數據會自動發佈至伺服器。 您可以從組建摘要下載 *.coverage 檔案,以在Visual Studio中檢視。

若要收集程式代碼涵蓋範圍,請在將測試工作新增至管線時新增 --collect "Code Coverage" 自變數。

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

如果您使用工作助理來新增 .NET CoreDotNetCoreCLI@2) 工作,請設定下列屬性:

  • 命令測試
  • 項目路徑:設定為方案中的測試專案
  • 參數--configuration $(BuildConfiguration) --collect "Code Coverage"

確定 [ 發佈測試結果] 選項仍保持選取狀態。

或者,若要搭配特定記錄器使用 dotnet test 命令來收集程式代碼涵蓋範圍結果,然後執行 PublishTestResults@2 工作,請使用下列程式代碼:

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'

使用 Coverlet 收集程式代碼涵蓋範圍計量

如果您在 Linux 或 macOS 上建置,您可以使用 Coverlet 或類似工具來收集程式碼涵蓋範圍計量。

您可以使用發佈程式代碼涵蓋範圍 結果 (PublishCodeCoverageResults@2) 工作,將程式代碼涵蓋範圍結果發佈至伺服器。 您必須設定涵蓋範圍工具,以 Cobertura 或 JaCoCo 涵蓋範圍格式產生結果。

若要使用 Coverlet 執行測試和發佈程式代碼涵蓋範圍:

  1. 新增 coverlet.collector NuGet 套件的參考。
  2. 將下列代碼段新增至 您的azure-pipelines.yml 檔案:
- 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'

封裝並傳遞您的程序代碼

若要封裝並傳遞組建輸出,您可以:

  • 將您的組建成品發佈至 Azure Pipelines。
  • 建立 NuGet 套件,並將其發佈至 NuGet 摘要。
  • 將您的 NuGet 套件發佈至 Azure Artifacts。
  • 建立 ZIP 封存以部署至 Web 應用程式。
  • 將符號發佈至 Azure Artifacts 符號伺服器或檔案共用。

您也可以 建置應用程式的映像 ,並將其 推送至容器登錄

將成品發佈至 Azure Pipelines

若要將 .NET 組建的輸出發佈至管線,請遵循下列步驟。

  1. 使用 .NET CLI 執行dotnet publish --output $(Build.ArtifactStagingDirectory),或使用 publish 命令新增 DotNetCoreCLI@2) 工作。
  2. 使用 發佈管線成品 (PublishPipelineArtifact@1) 工作發佈 成品。 此工作會將 中的所有 $(Build.ArtifactStagingDirectory) 檔案上傳為組建的成品。

將下列程式代碼新增至 您的azure-pipelines.yml 檔案:

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'

若要在發佈之前將更多檔案複製到組建目錄,請使用 複製檔案 (CopyFile@2) 工作。

注意

publishWebProjects .NET CoreDotNetCoreCLI@2) 工作中輸入預設會設定為 true ,併發佈存放庫中的所有 Web 專案。 如需詳細資訊,請參閱 azure-pipelines-tasks GitHub 存放庫。

若要將 .NET 組建的輸出發佈至管線,請執行下列工作:

  1. 使用 .NET CLI 執行dotnet publish --output $(Build.ArtifactStagingDirectory),或使用 publish 命令新增 DotNetCoreCLI@2) 工作。
  2. 使用 發布組建成品(PublishBuildArtifacts@1) 工作來發布成品。

下列 azure-pipelines.yml程序 代碼也會將您的組建成品發佈為 ZIP 檔案。 工作 PublishBuildArtifacts@1 會將 中的所有 $(Build.ArtifactStagingDirectory) 檔案上傳為組建的成品。

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'

如需詳細資訊,請參閱 發布和下載建置工件

發布至 NuGet 資源庫

若要建立 NuGet 套件並將其發佈至 NuGet 摘要,請將下列代碼段新增至 您的azure-pipelines.yml 檔案:

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

注意

NuGetAuthenticate@1 工作不支援 NuGet API 金鑰驗證。 如果您使用 NuGet API 金鑰,請使用NuGetCommand@2工作搭配設定為 command 和 自變數的push--api-key輸入。 例如: dotnet nuget push --api-key $(NuGetApiKey)

如需版本設定和發佈 NuGet 套件的詳細資訊,請參閱 使用 Azure Pipelines 發佈 NuGet 套件

將 NuGet 套件發佈至 Azure Artifacts

您可以使用 NuGetCommand@2 工作,將 NuGet 套件發佈至 Azure Artifacts 摘要。 如需詳細資訊,請參閱 使用 Azure Pipelines 發佈 NuGet 套件

將 ZIP 檔案封存發佈至 Web 應用程式

若要建立準備發行至 Web 應用程式的 ZIP 檔案封存,請將下列代碼段新增至 azure-pipelines.yml。 在建置應用程式之後執行此工作,在大部分情況下接近管線結尾。 例如,在部署至 Windows 上的 Azure Web 應用程式之前,請先執行這項工作。

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

若要將此封存發佈至 Web 應用程式,請參閱 Azure Web Apps 部署

發佈符號

您可以使用工作 PublishSymbols@2 將符號發佈至 Azure Artifacts 符號伺服器或檔案共用。 如需詳細資訊,請參閱 發佈符號

例如,若要將符號發佈至檔案共用,請將下列代碼段新增至 您的azure-pipelines.yml 檔案:

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

若要使用傳統編輯器,請將 索引來源和發佈符號工作 新增至您的管線。

故障排除

如果您的專案在本機計算機上成功建置,但未在 Azure Pipelines 中建置,請探索下列可能的原因和修正動作。

  • .NET Core SDK 的發行前版本不會安裝在Microsoft裝載的代理程式上,並將新版本的 SDK 推出至所有 Azure Pipelines 數據中心可能需要幾個星期的時間。 您可以使用 [使用 .NET Core ] 工作,在Microsoft裝載的代理程序上安裝您想要的 .NET Core SDK 版本,而不是等待推出完成。
  • 新版本的 .NET Core SDK 或 Visual Studio 可能會中斷組建,例如,如果它包含較新版本或 NuGet 工具的功能。 請確定開發電腦上的 .NET Core SDK 版本和運行時間符合管線代理程式。

    您可以在 dotnet --version 管線中包含命令行腳本,以列印 .NET Core SDK 的版本。 使用 .NET Core 工具安裝程式 在代理程式上部署相同的版本,或將專案和開發計算機更新為 .NET Core SDK 的管線版本。

  • 當您從 NuGet.org 還原套件時,您的組建可能會間歇性失敗。NuGet.org 可能有問題,或 Azure 資料中心與 NuGet.org 之間可能有網路問題。您可以探索是否搭配 上游來源 使用 Azure Artifacts 來快取套件,以改善組建的可靠性。

    管線的認證會自動用來連線到 Azure Artifacts。 這些認證通常衍生自 Project Collection Build Service 帳戶。 如需深入了解如何使用 Azure Artifacts 緩存 NuGet 套件,請參閱 連線到 Azure Artifacts 摘要

  • 您可能會在 Visual Studio 中使用一些未在管線中編碼的邏輯。 Azure Pipelines 會在新進程中循序地在工作中執行每個命令。 檢查管線組建中的記錄,以查看在組建中執行的確切命令。 若要找出問題,請在開發計算機上以相同順序重複相同的命令。

  • 如果您有包含某些 .NET Core 專案和某些 .NET Framework 專案的混合方案,請使用 NuGet 工作來還原 packages.config 檔案中指定的套件。 新增 MSBuildVisual Studio 建置工作,以建置 .NET Framework 專案。