建立、測試及部署 .NET Core 應用程式
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
使用 Azure Pipeline 來自動建置、測試及部署 .NET Core 專案。 本文示範如何執行下列工作:
- 使用 Microsoft裝載 或 自我裝載 的代理程式來設定組建環境。
- 還原相依性、建置您的專案,並使用 .NET Core 工作 (DotNetCoreCLI@2) 或腳本進行測試。
- 測試您的程式代碼,並使用 發佈程式代碼涵蓋範圍工作 來發佈程式代碼涵蓋範圍結果。
- 封裝並傳遞組建輸出至:
注意
如需 .NET Framework 項目的協助,請參閱 使用 .NET Framework 建置 ASP.NET 應用程式。
必要條件
- 您可以在其中建立存放庫的 GitHub 帳戶。 免費建立一個。
- Azure DevOps 集合。
- 能夠在已安裝 Docker 且在代理程式主機上執行的自我裝載代理程式上執行管線。
建立您的第一個管線
您不熟悉 Azure Pipelines 嗎? 若是如此,建議您先嘗試下一節。
建立 .NET 專案
如果您沒有要使用的 .NET 專案,請在本機系統上建立新的專案。 從安裝 最新的 .NET 8.0 SDK 開始。
開啟終端機視窗。
建立專案目錄並瀏覽到該目錄。
建立新的 .NET 8 webapp。
dotnet new webapp -f net8.0
從相同的終端機會話,使用來自專案目錄的
dotnet run
命令在本機執行應用程式。dotnet run
應用程式啟動之後,請按 Ctrl-C 將其關閉。
建立 Git 存放庫並將它連線至 GitHub
建立 DevOps 專案
登入 Azure Pipelines。 登入之後,您的瀏覽器會前往 https://dev.azure.com/my-organization-name
並顯示您的 Azure DevOps 儀表板。
- 在瀏覽器中,移至 dev.azure.com 並登入。
- 選取您的組織。
- 選取 [新增專案 ] 或 [在組織中建立第一個專案時建立專案],以建立新的專案 。
- 輸入專案名稱。
- 選取項目的可見度。
- 選取 建立。
- 在瀏覽器中,移至您的 Azure DevOps Server。
- 選取您的集合。
- 選取 [新增專案 ] 或 [在集合中建立第一個專案時建立專案],以建立新的專案 。
- 輸入專案名稱。
- 選取項目的可見度。
- 選取 建立。
- 在瀏覽器視窗中,登入您的 Azure DevOps Server 並選取您的集合。
- 選取 [新增專案]。
- 輸入專案名稱。
- 或者,輸入描述。
- 選取 建立。
設定組建環境
您的組建會在自我裝載的代理程式上執行。 請確定您已在代理程式上安裝必要的 .NET Core SDK 和執行時間版本。 您可以使用 Windows、Linux、macOS 和 Docker 上的 .NET Core SDK 和運行時間來建置 .NET Core 專案。
您可以在管線 YAML 檔案中新增UseDotNet@2工作,或使用傳統編輯器將工作新增至管線,以安裝特定版本的 .NET SDK。
範例 YAML 代碼段:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
您的組建會在裝載Microsoft代理程式上執行。 您可以使用 Windows、Linux 和 macOS 上的 .NET Core SDK 和運行時間來建置 .NET Core 專案。
或者,您可以使用 自我裝載代理程式。 透過自我裝載的代理程式,您可以使用 Azure DevOps Services 未正式支援的預覽或私人 SDK,並執行累加組建。
建立管線
您可以使用 YAML 管線編輯器或傳統編輯器來建立管線。 若要使用傳統編輯器,請選取 [ 使用傳統編輯器]。
建立新的管線並選取您的來源
登入您的 Azure DevOps 組織並前往您的專案。
移至 [管線],然後在建立第一個管線時選取 [ 新增管線 ] 或 [建立管線 ]。
執行精靈的步驟,首先選取 [GitHub] 作為您的原始程式碼位置。
系統可能會將您重新導向至 GitHub 以進行登入。 若是如此,請輸入 GitHub 認證。
當您看到存放庫清單時,請選取您的存放庫。
系統可能會將您重新導向至 GitHub,以安裝 Azure Pipelines 應用程式。 如果發生此情況,請選取 [核准並安裝]。
設定您的管線
當 [設定 ] 索引標籤出現時,請選取 [顯示更多 ],然後從清單中選取 [ASP.NET 核心 管線範本]。
檢查您的新管線,以查看 YAML 的功能。
您可以自訂 YAML 檔案以符合您的需求。 例如,您可以指定代理程式集區,或新增工作 來安裝不同的 .NET SDK。
儲存並執行管線
當您準備好時,請選取 [儲存並執行]。
您可以選擇性地編輯認可訊息。
選取 [儲存並執行],將新的azure-pipelines.yml檔案認可至存放庫。
若要監看管線的運作情形,請選取 [作業] 區段中的作業。
建立並執行管線
您可以使用 YAML 管線編輯器或傳統編輯器來建立管線。
- 移至您的項目,然後選取 [ 管線]。
- 如果為此專案建立第一個管線,請選取 [建立管線 ] 或 [新增管線 ]。
選取您的來源
選取您的來源存放庫。 在此範例中,請使用 GitHub Enterprise Server。
- 輸入 GitHub 帳戶的 URL。 例如:
https://github.com/<username>
。 - 輸入 GitHub 帳戶的個人存取令牌。
- 輸入服務連線名稱。 例如:
my-github
。 - 選取 建立。
- 輸入 GitHub 帳戶的 URL。 例如:
選取您的 GitHub 存放庫。
設定您的管線
在 [ 設定] 索引標籤上,選取 [顯示更多 ],然後從清單中選取 [ASP.NET 核心 管線範本]。
檢查您的新管線,以查看 YAML 的功能。
您可以自訂 YAML 檔案以符合您的需求。 例如,您可以新增工作來安裝 .NET SDK,或測試及發佈您的專案。
儲存並執行管線
選取儲存。
若要將管線 YAML 檔案認可到您的存放庫,請視需要編輯認可訊息,然後選取 [ 儲存]。
選取 [ 執行] 以執行管線。
若要查看管線執行時的組建記錄,請選取頁面頂端的組建編號。
選取儲存並執行。
若要將新的azure-pipelines.yml檔案認可至您的存放庫,請視需要編輯認可訊息,然後選取 [儲存並執行]。
若要監看管線的運作情形,請選取 [作業] 區段中的作業。
您現在已有可運作的管線可供您自定義! 深入瞭解自定義管線的一些常見方式。
建置環境
Azure Pipelines 會使用自我裝載的代理程式來建置 .NET Core 專案。 請確定您已在代理程式上安裝必要的 .NET Core SDK 和執行時間版本。 您可以使用 Windows、Linux、macOS 和 Docker 上的 .NET Core SDK 和運行時間來建置 .NET Core 專案。
例如,若要在管線 YAML 檔案中選取集區和代理程式功能:
您可以選取建置作業的代理程式集區和代理程式。 代理程式會根據其功能來指定。
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
您可以在管線中新增UseDotNet@2工作,以安裝特定版本的 .NET SDK。 請記住,對於在實體系統上執行的代理程式,透過管線安裝SDK和工具會改變代理程式主機上的組建環境。
若要安裝較新的 SDK,請在下列代碼段中設定 performMultiLevelLookup
為 true
:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
您可以使用 Azure Pipelines 在 Windows、Linux 或 macOS 上建置 .NET Core 專案,而不需要設定基礎結構。
例如,Ubuntu 是在管線 YAML 檔案中設定的。
pool:
vmImage: 'ubuntu-latest'
如需映像的完整清單和進一步的組態範例,請參閱 Microsoft裝載的 代理程式。
Azure Pipelines 中的Microsoft裝載代理程式包含數個預安裝的 .NET Core SDK 版本。 Microsoft裝載的代理程式不包含一些舊版的 .NET Core SDK。 它們通常不會包含發行前版本。 如果您需要Microsoft裝載代理程式上的這些 SDK 版本,請使用 UseDotNet@2 工作加以安裝。
例如,若要安裝 5.0.x SDK,請新增下列代碼段:
steps:
- task: UseDotNet@2
inputs:
version: '5.x'
Windows 代理程式已經包含 .NET Core 執行時間。 若要安裝較新的 SDK,請在下列代碼段中設定 performMultiLevelLookup
為 true
:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
還原相依性
NuGet 是依賴您未建置之程式代碼的熱門方式。 您可以透過 .NET Core 工作或直接在管線中的腳本中執行 dotnet restore
命令,以下載項目檔中指定的 NuGet 套件和專案特定工具。 如需詳細資訊,請參閱 .NET Core 工作 (DotNetCoreCLI@2)。
您可以從 Azure Artifacts、NuGet.org 或其他外部或內部 NuGet 存放庫下載 NuGet 套件。 .NET Core 工作特別適合從已驗證的 NuGet 摘要還原套件。 如果您的摘要與管線位於相同的專案中,則不需要進行驗證。
此管線會在DotNetCoreCLI@2工作中針對 dotnet restore
使用 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)'
此命令 dotnet restore
使用 NuGet.exe
封裝的 .NET Core SDK,而且只能還原 .NET Core 項目 .csproj
檔中指定的套件。
如果您的方案中也有Microsoft .NET Framework 專案,或使用 package.json
來指定相依性,請使用 NuGet 工作來還原這些相依性。
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
在 .NET Core SDK 2.0 版和更新版本中,執行 之類的 dotnet build
命令時,會自動還原套件。 不過,如果您使用已驗證的 摘要,您仍然需要使用 .NET Core 工作來還原套件。
當您從 NuGet.org 還原套件時,您的組建可能會失敗。您可以使用 Azure Artifacts 搭配 上游來源 來快取套件。 管線的認證會在連線到 Azure Artifacts 時自動使用。 這些認證通常衍生自 Project Collection Build Service 帳戶。 若要深入瞭解如何使用 Azure Artifacts 快取 NuGet 套件,請參閱 連線到 Azure Artifact 摘要。
若要指定 NuGet 存放庫,請將 URL NuGet.config
放在存放庫中的檔案中。 如果您的摘要已驗證,請在 [項目設定] 下的 [服務] 索引標籤中建立 NuGet 服務連線,以管理其認證。
當您使用Microsoft裝載的代理程式時,每次執行組建時,都會取得新的計算機,這會在每個執行時還原套件。 還原可能需要大量的時間。 若要減輕問題,您可以使用 Azure Artifacts 或自我裝載代理程式,並利用套件快取的優點。
如需 NuGet 服務連線的詳細資訊,請參閱 發佈至 NuGet 摘要。
從外部摘要還原套件
執行下列動作以從外部摘要還原套件。
您可以使用 YAML 管線編輯器將還原命令新增至管線,方法是將下列代碼段直接插入檔案 azure-pipelines.yml
,或使用工作助理來新增 .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>
將 <佔位元> 取代為您的服務連線名稱。
若要使用工作助理:
若要使用工作助理新增建置工作,請執行下列步驟:
移至您要插入工作的 YAML 檔案中的位置。
從工作 目錄選取 .NET Core 。
從 [命令] 下拉式清單中選取還原命令。
在 [ 項目路徑] 欄位中,輸入檔案
.csproj
的路徑。選取 [新增]。
選取 [ 儲存] 以認可變更。
注意
請確定已在檔案 NuGet.config
中指定自定義摘要,且已在 NuGet 服務連線中指定認證。
建置您的專案
執行 dotnet build
命令來建置 .NET Core 專案。 您可以將命令新增至管線做為命令行腳本,或使用 .NET Core 工作。
使用 .NET Core 工作建置 .NET Core
使用 DotNetCoreCLI@2 工作建置的 YAML 範例:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)' # Update this to match your needs
您可以使用 YAML 管線編輯器新增建置工作,方法是直接編輯檔案,或使用工作助理新增 .NET Core 工作。
若要使用工作助理新增建置工作,請執行下列步驟:
移至您要插入工作的 YAML 檔案中的位置。
從工作 目錄選取 .NET Core 。
從 [命令] 下拉式清單中選取組建命令。
在 [ 項目路徑] 欄位中,輸入檔案
.csproj
的路徑。選取 [新增]。
選取 [ 儲存] 以認可變更。
使用命令行腳本建置 .NET Core
使用 dotnet build
作為文稿建置的 YAML 範例:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
您可以使用 YAML 管線編輯器新增建置工作,方法是直接編輯檔案或新增 命令行 工作。
使用下列步驟來新增 命令列 工作:
移至您要插入工作的 YAML 檔案中的位置。
從工作目錄選取命令行。
選擇性地新增 顯示名稱。
使用
dotnet build
參數輸入 命令。 例如:dotnet build --configuration $(buildConfiguration)
。輸入檔案的路徑
.csproj
做為工作目錄。選取 [新增]。
選取 [ 儲存] 以認可變更。
將 .NET SDK 命令新增至管線
您可以將 .NET SDK 命令新增至專案做為腳本或使用 .NET Core 工作。 .NET Core 工作 (DotNetCoreCLI@2) 工作可讓您輕鬆地將 dotnet CLI 命令新增至管線。 您可以編輯 YAML 檔案或使用傳統編輯器來新增 .NET Core 工作。
使用 .NET Core 工作新增 .NET CLI 命令
若要使用 YAML 管線編輯器新增 .NET Core CLI 命令,請執行下列步驟:
移至您要插入工作的 YAML 檔案中的位置。
從工作目錄選取 [.NET Core ]。
選取您想要執行的命令。
設定所需的任何選項。
選取 [新增]。
選取 [ 儲存] 以認可變更。
使用腳本新增 .NET Core CLI 命令
您可以將 .NET Core CLI 命令新增為 script
檔案 azure-pipelines.yml
中的 。
範例:
steps:
# ...
- script: dotnet test <test-project>
安裝工具
若要在 Windows 上執行的組建中安裝類似 dotnetsay 的 .NET Core 全域工具,請執行下列步驟:
- 新增 .NET Core 工作並設定下列屬性:
- 命令:自定義。
- 項目路徑: 保留空白。
- 自訂命令:工具。
- 自變數:
install -g dotnetsay
。
- 命令:自定義。
- 若要執行此工具,請新增 命令列 並設定下列屬性:
- 腳本:
dotnetsay
。
- 腳本:
執行測試
當您在存放庫中有測試專案時,可以使用 .NET Core 工作來執行單元測試,方法是使用 MSTest、xUnit 和 NUnit 等測試架構。 測試項目必須參考 Microsoft.NET.Test.SDK 15.8.0 版或更高版本。 測試結果會自動發佈至服務。 您可以在組建摘要中取得這些結果,並可用於針對失敗的測試進行疑難解答和測試計時分析。
您可以使用 DotNetCoreCLI@2 工作,將測試工作新增至管線,或將下列代碼段新增至檔案azure-pipelines.yml
:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
使用 .NET Core 工作編輯器時,將 [命令] 設定為 [測試] 和 [路徑至專案] 應參考方案中的測試專案。
或者,您可以使用特定的記錄器執行 dotnet 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'
收集程式代碼涵蓋範圍
當您在 Windows 平臺上建置時,可以使用內建涵蓋範圍數據收集器來收集程式代碼涵蓋範圍計量。 測試項目必須參考 Microsoft.NET.Test.SDK 15.8.0 版或更高版本。
當您使用 .NET Core 工作來執行測試時,涵蓋範圍數據會自動發佈至伺服器。 .coverage
您可以從組建摘要下載檔案,以在Visual Studio中檢視。
將下列代碼段新增至您的 azure-pipelines.yml
檔案:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
若要透過工作編輯器新增 .NET Core 工作:
將 .NET Core 工作新增至您的建置作業,並設定下列屬性:
- 命令:測試。
- 項目路徑: 應該參考方案中的測試專案。
- 自變數:
--configuration $(BuildConfiguration) --collect "Code coverage"
。
確定 [ 發佈測試結果] 選項仍保持選取狀態。
如果您選擇執行 dotnet 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'
使用 Coverlet 收集程式代碼涵蓋範圍計量
如果您要在 Linux 或 macOS 上建置,您可以使用 Coverlet 或類似工具來收集程式碼涵蓋範圍計量。
您可以使用發佈程式代碼涵蓋範圍結果 (PublishCodeCoverageResults@1) 工作,將程式代碼涵蓋範圍結果發佈至伺服器。 涵蓋範圍工具必須設定為以 Cobertura 或 JaCoCo 涵蓋範圍格式產生結果。
若要使用 Coverlet 執行測試和發佈程式代碼涵蓋範圍,請執行下列工作:
將參考新增至
coverlet.collector
NuGet 套件。將下列代碼段新增至您的
azure-pipelines.yml
檔案:- 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'
封裝並傳遞您的程序代碼
您可以透過下列方式發佈組建成品:
- 發佈至 Azure Pipelines。
- 將套件發佈至 Azure Artifacts。
- 建立 NuGet 套件併發佈至 NuGet 摘要。
- 建立 .zip 封存以部署 Web 應用程式。
將成品發佈至 Azure Pipelines
若要將 .NET 組建 的輸出發佈至管線,請執行下列工作:
- 在 .NET CLI 上執行
dotnet publish --output $(Build.ArtifactStagingDirectory)
,或使用 publish 命令新增 DotNetCoreCLI@2 工作。 - 使用 發佈管線成品工作發佈成品 。
將下列代碼段新增至您的 azure-pipelines.yml
檔案:
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'
注意
DotNetCoreCLI@2工作具有publishWebProjects
預設設為 true 的輸入。 此工作預設會 發佈存放庫中的所有 Web 專案。 您可以在 GitHub 上的 開放原始碼 工作中找到更多說明和資訊。
若要在發佈之前將更多檔案複製到組建目錄,請使用 複製檔案 (CopyFile@2) 工作。
若要將 .NET 組建 的輸出發佈至管線,請執行下列工作:
- 在 CLI 上執行
dotnet publish --output $(Build.ArtifactStagingDirectory)
,或使用 publish 命令新增 DotNetCoreCLI@2 工作。 - 使用 發佈組建成品 (PublishBuildArtifacts@1) 工作發佈成品。
將下列代碼段新增至檔案 azure-pipelines.yml
,以將組建成品發佈為.zip檔案:
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'
如需詳細資訊,請參閱 發佈和下載組建成品。
發佈至 NuGet 摘要
若要建立 NuGet 套件並將其發佈至 NuGet 摘要,請新增下列代碼段:
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
注意
NuGetAuthenticate@1工作不支援 NuGet API 金鑰驗證。 如果您使用 NuGet API 金鑰,請使用 NuGetCommand@2 工作搭配 command
--api-key 自變數設定為 push
的輸入。 例如: dotnet nuget push --api-key $(NuGetApiKey)
。
如需版本設定和發佈 NuGet 套件的詳細資訊,請參閱 發佈至 NuGet 摘要。
將 NuGet 套件發佈至 Azure Artifacts
您可以使用NuGetCommand@2將 NuGet 套件發佈至 Azure Artifacts 摘要,以推送至您的 Azure Artifact 摘要。 例如,請參閱 使用 Azure Pipelines 發佈 NuGet 套件。
部署 Web 應用程式
若要建立準備發行至 Web 應用程式的.zip檔案封存,請新增下列代碼段:
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
若要將此封存發佈至 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裝載的代理程式上。 發行新版本的 .NET Core SDK 之後,可能需要數周的時間才能推出至所有 Azure Pipelines 數據中心。 您不需要等候此推出完成。 您可以使用使用 .NET Core 工作,在Microsoft裝載的代理程序上安裝您想要的 .NET Core SDK 版本。
檢查開發電腦上的 .NET Core SDK 版本和運行時間,並確定它們符合代理程式。 您可以在管線中包含命令行腳本
dotnet --version
,以列印 .NET Core SDK 的版本。 使用 .NET Core 工具安裝程式 在代理程式上部署相同的版本,或將專案和開發計算機更新為較新版本的 .NET Core SDK。您可能會在管線中未編碼的 Visual Studio IDE 中使用一些邏輯。 Azure Pipelines 會執行您在新程式中一個接一個的工作中指定的每個命令。 檢查管線組建中的記錄,以查看在組建中執行的確切命令。 在開發計算機上以相同順序重複相同的命令,以找出問題。
如果您有包含某些 .NET Core 專案和某些 .NET Framework 專案的混合方案,則也應該使用 NuGet 工作來還原檔案中指定的
packages.config
套件。 新增 MSBuild 或 Visual Studio 建置工作,以建置 .NET Framework 專案。還原套件時,您的組建可能會間歇性失敗:NuGet.org 發生問題,或 Azure 數據中心與 NuGet.org 之間發生網路問題。您可以探索使用 Azure Artifacts 搭配 NuGet.org 作為上游來源,是否可改善組建的可靠性,因為它不在我們的控制中。
有時候,當推出新版本的 .NET Core SDK 或 Visual Studio 時,您的組建可能會中斷。 例如,NuGet 工具的較新版本或功能隨附於 SDK 可能會中斷您的組建。 若要找出此問題,請使用 .NET Core 工具安裝程式 工作來指定組建中使用的 .NET Core SDK 版本。
常見問題集
問:我可以在哪裡深入瞭解 Azure Artifacts?
問:我可以在哪裡深入瞭解 .NET Core 命令?
問:我可以在哪裡深入瞭解在解決方案中執行測試?
問:我可以在哪裡深入瞭解工作?
答: 建置和發行工作