生成、测试和部署 .NET Core 应用
本文内容
先决条件
创建第一个管道
生成环境
还原依赖项
生成项目
将 .NET SDK 命令添加到管道
运行测试
收集代码覆盖率
打包和交付代码
疑难解答
常见问题解答
显示另外 7 个
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
使用 Azure Pipeline 自动生成、测试和部署 .NET Core 项目。 本文演示如何完成以下任务:
GitHub 帐户,可在其中创建存储库。 免费创建一个 。
Azure DevOps 组织和项目。 免费创建一个 。
能够在 Microsoft 托管的代理上运行管道。 可以购买并行作业 ,也可以请求免费层。
GitHub 帐户,可在其中创建存储库。 免费创建一个 。
Azure DevOps 集合。
可在安装了 Docker 的自承载代理上运行管道,并在代理的主机上运行。
你是 Azure Pipelines 的新手吗? 如果是,建议先尝试以下部分。
如果没有可使用的 .NET 项目,则请在本地系统上创建一个新项目。 首先安装最新的 .NET 8.0 SDK 。
打开终端窗口。
创建项目目录,然后转到此目录。
创建新的 .NET 8 Web 应用。
dotnet new webapp -f net8.0
在同一个终端会话中,从项目目录中使用 dotnet run
命令在本地运行应用程序。
dotnet run
应用程序启动后,按 Ctrl-C 将其关闭。
在项目目录中,创建本地 Git 存储库,并将应用程序代码提交到主分支 。
将本地 Git 存储库连接到 GitHub 存储库 。
登录到 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 Core 管道模板。
检查新管道,了解 YAML 的作用。
可根据自己的要求自定义 YAML 文件。 例如,可指定代理池或添加任务来安装其他 .NET SDK 。
准备就绪后,选择保存并运行 。
(可选)可编辑提交消息。
通过选择保存并运行 ,将新的 azure-pipelines.yml 文件提交到存储库。
若要查看正在运行的管道,请在作业 部分选择该作业。
可使用 YAML 管道编辑器或经典编辑器创建管道。
转到项目,然后选择管道 。
选择创建管道 (如果是为此项目创建第一个管道,则选择新建管道 )。
选择源存储库。 对于此示例,请使用 GitHub Enterprise Server 。
输入 GitHub 帐户的 URL。 例如,https://github.com/<username>
。
输入 GitHub 帐户的个人访问令牌。
输入服务连接名称。 例如,my-github
。
选择创建 。
选择你的 GitHub 存储库。
在配置 选项卡上,选择显示更多 ,然后从列表中选择 ASP.NET Core 管道模板。
检查新管道,了解 YAML 的作用。
可根据自己的要求自定义 YAML 文件。 例如,可添加任务来安装 .NET SDK 或测试并发布项目。
选择“保存”。
若要将管道 YAML 文件提交到存储库,请按需编辑提交消息,然后选择保存 。
选择运行 以运行管道。
若要查看管道运行时的生成日志,请选择页面顶部的生成号。
选择保存并运行 。
若要将新的 azure-pipelines.yml 文件提交到存储库,请按需编辑提交消息,然后选择保存并运行 。
若要查看正在运行的管道,请在作业 部分选择该作业。
执行以下步骤以使用经典编辑器创建管道。
转到项目,然后选择管道 。
选择创建管道 (如果不是为此项目创建第一个管道,则选择新建管道 )。
选择使用经典编辑器 。
选择来源。 对于此示例,请选择 GitHub Enterprise Server 。
选择连接到 GitHub Enterprise Server 。
输入 GitHub 凭据以创建要在管道中使用的 GitHub 服务连接。
选择存储库,然后选择继续 。
选择来源。 对于此示例,请选择 GitHub 。
输入 GitHub 凭据以创建要在管道中使用的 GitHub 服务连接。
选择存储库,然后选择继续 。
在选择模板 中,找到并选择 ASP.NET Core 。
管道页面随即打开,并可在其中配置管道。 可在此处添加任务、指定代理池和代理以及配置其他生成选项。
在任务 选项卡中,选择代理池 (通常为默认 )
选择代理规范 。 对于此示例,请选择 windows-latest 。
可通过选择代理作业上的 + 并从目录中选择其他任务,从而将其他任务添加到代理作业。 例如,你可能想将使用 .NET Core 任务添加为第一个任务,以便安装所需版本的 .NET SDK。
从页面顶部的保存并排队 下拉列表中选择保存并排队 。
在运行管道 中,输入注释,然后选择保存并运行 。
可通过从摘要 选项卡上的作业 部分选择该作业来查看正在运行的管道。
从保存并排队 下拉列表中选择保存并排队 。
在保存生成管道并排队 对话框中,选择保存并排队 。
当生成 #nnnnnnnn.n 已排队 消息出现时,选择链接以查看正在运行的管道。
从页面顶部的保存并排队 下拉列表中选择保存并排队 。
在运行管道 对话框中,添加保存注释 ,然后选择保存并运行 。
可通过从摘要 选项卡上的作业 部分选择该作业来查看正在运行的管道。
现在,你已创建一个可自定义的有效管道! 进一步阅读以了解自定义管道的某些常见方法。
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
可使用 Azure Pipelines 在 Windows、Linux 或 macOS 上生成 .NET Core 项目,而无需设置基础结构。
例如,可在管道 YAML 文件中设置 Ubuntu。
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
提示
若要节省运行工具安装程序的成本,可以设置 Linux、macOS 或 Windows 自承载代理。
如果你有大型存储库或者可以运行增量生成,则也可以使用自托管代理来节省时间。 自托管代理还有助于使用非 Azure DevOps 官方支持或仅在公司或本地环境中可用的预览版或专用 SDK。
NuGet 是依赖于未生成的代码的常用方法。 可以通过 dotnet restore
任务或直接在管道中的脚本中运行 命令,下载项目文件中指定的 NuGet 包和项目特定工具。 有关详细信息,请参阅 .NET Core 任务 (DotNetCoreCLI@2) 。
可以从 Azure Artifacts、NuGet.org 或其他外部或内部 NuGet 存储库下载 NuGet 包。 .NET Core 任务对于从经过身份验证的 NuGet 源还原包特别有用。 如果源与管道位于同一项目中,则无需进行身份验证。
此管道在 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
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
feedsToUse: 'select'
vstsFeed: 'my-vsts-feed'
- task: DotNetCoreCLI@2
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration)'
displayName: 'dotnet build $(buildConfiguration)'
dotnet restore
命令使用与 .NET Core SDK 打包的 NuGet.exe
,且只能还原 .NET Core 项目 .csproj
文件中指定的包。
如果解决方案中还有 Microsoft .NET Framework 项目,或者使用 package.json
指定依赖项,请使用 NuGet 任务还原这些依赖项。
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
备注
如果使用的是 Ubuntu 24.04 或更高版本,则必须将 NuGetAuthenticate
任务与 .NET CLI 配合使用,而不是 NuGetCommand@2
任务。 有关详细信息,请参阅支持较新的 Ubuntu 托管映像 。
在 .NET Core SDK 2.0 及更高版本中,运行 dotnet build
等命令时会自动还原包。 但是,如果使用了经过身份验证的源,则仍需使用 .NET Core 任务来还原包。
从 NuGet.org 还原包时,生成可能会因连接问题而失败。可将 Azure Artifacts 与上游源 配合使用来缓存包。 管道在连接到 Azure Artifacts 时会自动使用管道的凭证。 这些凭据通常派生自项目集合生成服务 帐户。 若要详细了解如何使用 Azure Artifacts 来缓存 NuGet 包,请参阅连接到 Azure Artifact 源 。
若要指定 NuGet 存储库,请将 URL 置于存储库中的 NuGet.config
文件内。 如果源已经过身份验证,请在项目设置 下的服务 选项卡中创建 NuGet 服务连接来管理其凭据。
使用 Microsoft 托管代理时,每次运行生成时都会获得一个新计算机,而它会在每次运行时还原这些包。 还原可能会花费大量时间。 若要缓解问题,可以使用 Azure Artifacts 或自托管代理,这样便可体会到使用包缓存的好处。
有关 NuGet 服务连接的详细信息,请参阅发布到 NuGet 源 。
执行以下操作以从外部源还原包。
可使用 YAML 管道编辑器将 restore 命令添加到管道,具体方法是将以下代码片段直接插入 azure-pipelines.yml
文件或使用任务助手添加 .NET Core 任务。
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: config
nugetConfigPath: NuGet.config
externalFeedCredentials: <Name of the NuGet service connection>
将<占位符>替换为服务连接名称。
若要使用任务助手,请执行以下操作:
若要使用任务助手添加生成任务,请执行以下步骤:
转到 YAML 文件中要插入此任务的位置。
从任务目录选择 .NET Core 。
从命令 下拉列表选择 restore 命令。
在项目路径 字段中,输入 .csproj
文件的路径。
选择 添加 。
选择保存 以提交此更改。
使用以下步骤并使用经典编辑器来添加还原任务:
在管道中选择任务 ,然后选择运行生成任务的作业。
选择 + 可向该作业添加新任务。
在任务目录中,找到并选择 .NET Core 任务,然后选择添加 。
选择此任务以打开任务编辑器。
在命令 列表中选择 restore ,并指定此任务所需的所有其他选项。
在任务列表中,拖动此任务以将其置于生成任务之前。
从保存并排队 下拉列表中选择用于保存此更改的选项。
备注
请确保在 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)'
可通过直接编辑此文件或使用任务助手来添加 .NET Core 任务,从而使用 YAML 管道编辑器添加生成任务。
若要使用任务助手添加生成任务,请执行以下步骤:
转到 YAML 文件中要插入此任务的位置。
从任务目录选择 .NET Core 。
从命令 下拉列表选择 build 命令。
在项目路径 字段中,输入 .csproj
文件的路径。
选择 添加 。
选择保存 以提交此更改。
若要使用经典编辑器添加生成任务,请执行以下步骤:
在管道中选择任务 。
选择运行生成任务的作业。
选择 + 可向该作业添加新任务。
在任务目录中,找到并添加 .NET Core 任务。
选择此任务,然后从命令 下拉列表选择 build 。
在项目路径 字段中,输入 .csproj
文件的路径。
拖动此任务以将置于管道中的正确任务序列中。
选择保存并排队 下拉列表,然后选择用于保存更改的选项。
将 dotnet build
用作脚本来生成 YAML 的示例:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
可通过直接编辑此文件或添加命令行 任务,从而使用 YAML 管道编辑器添加生成任务。
使用以下步骤添加命令行 任务:
转到 YAML 文件中要插入此任务的位置。
从任务目录中选择命令行 。
(可选)添加显示名称 。
输入包含参数的 dotnet build
命令。 例如,dotnet build --configuration $(buildConfiguration)
。
输入作为工作目录的 .csproj
文件的路径。
选择 添加 。
选择保存 以提交此更改。
若要使用经典编辑器添加生成任务,请执行以下步骤:
在管道中选择任务 。
选择运行生成任务的作业。
选择 + 可向该作业添加新任务。
在任务目录中,找到并添加 命令行 任务。
(可选)添加显示名称 。
输入包含参数的 dotnet build
命令。 例如,dotnet build --configuration $(buildConfiguration)
。
输入作为工作目录的 .csproj
文件的路径。
拖动此任务以将置于管道中的正确任务序列中。
选择保存并排队 下拉列表,然后选择用于保存更改的选项。
可将 .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 任务,请执行以下步骤:
在管道中选择任务 。
选择运行生成任务的作业。
选择 + 可向该作业添加新任务。
在任务目录中,找到并添加 .NET Core 任务。
选择此任务,然后选择要运行的命令 。
配置所需的所有选项。
拖动此任务以将置于管道中的正确任务序列中。
从保存并排队 下拉列表选择用于保存更改的选项。
可将 .NET Core CLI 命令添加为 script
文件中的 azure-pipelines.yml
。
示例:
steps:
- script: dotnet test <test-project>
若要在 Windows 上运行的版本中安装 .NET Core 全局工具(如 dotnetsay ),请执行以下步骤:
添加 .NET Core 任务,并设置以下属性:
命令 :custom。
自定义命令 :tool。
参数 :install -g dotnetsay
。
若要运行该工具,请添加命令行 并设置以下属性:
存储库中有测试项目时,可使用 .NET Core 任务并通过 MSTest、xUnit 和 NUnit 等测试框架来运行单元测试。 测试项目必须引用 Microsoft.NET.Test.SDK 版本 15.8.0 或更高版本。
测试结果会自动发布到服务。 生成摘要中提供了这些结果,可用于排查失败的测试和测试计时分析。
可使用 DotNetCoreCLI@2 任务将测试任务添加到管道,或将以下代码片段添加到 azure-pipelines.yml
文件:
steps:
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
使用 .NET Core 任务编辑器时,将命令 设为 test ,而项目路径 则应引用解决方案中的测试项目。
或者,也可使用特定记录器运行 dotnet test
命令,然后使用发布测试结果 任务:
steps:
- 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:
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'
若要通过任务编辑器添加 .NET Core 任务,请执行以下操作:
将 .NET Core 任务添加到生成作业并设置以下属性:
命令 :test。
项目路径 :应引用解决方案中的测试项目 。
参数 :--configuration $(BuildConfiguration) --collect "Code Coverage"
。
确保发布测试结果 选项保持选中状态。
如果选择运行 dotnet test
命令,请指定测试结果记录器和覆盖率选项。 然后使用发布测试结果 任务:
steps:
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
如果要在 Linux 或 macOS 上生成,可以使用 Coverlet 或类似工具来收集代码覆盖率指标。
可以使用 发布代码覆盖率结果(PublishCodeCoverageResults@2 任务)将代码覆盖率结果发布到服务器。 覆盖率工具必须配置为以 Cobertura 或 JaCoCo 覆盖格式生成结果。
若要运行测试并使用 Coverlet 发布代码覆盖率,请执行以下任务:
添加对 coverlet.collector
NuGet 包的引用。
若要将以下代码片段添加到 azure-pipelines.yml
文件,请执行以下操作:
- task: UseDotNet@2
inputs:
version: '8.x'
includePreviewVersions: true
- 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'
- task: PublishCodeCoverageResults@2
displayName: 'Publish code coverage report'
inputs:
codeCoverageTool: 'Cobertura'
summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
可通过以下方式发布生成项目:
发布到 Azure Pipelines。
将包发布到 Azure Artifacts。
创建 NuGet 包并发布到 NuGet 源。
创建 .zip 存档以部署 Web 应用。
若要将 .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
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'myWebsite'
备注
默认情况下,DotNetCoreCLI@2 任务的 publishWebProjects
输入将设为 true 。 默认情况下,此任务将发布存储库中的所有 Web 项目。 可以在 GitHub 上的开放源代码任务 中找到更多帮助和信息。
若要在发布之前将更多文件复制到生成目录,请使用复制文件 (CopyFile@2) 任务。
若要将 .NET 生成 的输出发布到管道,请执行以下任务:
将以下代码片段添加到 azure-pipelines.yml
文件,以将生成项目发布为 .zip 文件:
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 源,请添加以下代码片段:
steps:
- script: dotnet pack /p:PackageVersion=$(version)
- 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
参数将 push
输入设为 。 例如,dotnet nuget push --api-key $(NuGetApiKey)
。
有关版本控制以及发布 NuGet 包的详细信息,请参阅发布 NuGet 源 。
将 NuGet 包发布到 Azure Artifacts
可使用 NuGetCommand@2 以推送到 Azure Artifacts 源,从而将 NuGet 包发布到 Azure Artifacts 源。 有关示例,请参阅使用 Azure Pipelines 发布 NuGet 包 。
若要创建准备发布到 Web 应用的 .zip 文件存档,请添加以下代码片段:
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
要将此存档发布到 Web 应用,请参阅 Azure Web 应用部署 。
还可为应用生成映像 ,并将其推送到容器注册表 。
你可以使用 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 时,生成可能会中断。 例如,SDK 所附带 NuGet 工具的较新版本或功能可能会中断生成。 若要解决此问题,请使用“.NET Core 工具安装程序” 任务指定生成中使用的 .NET Core SDK 版本。
问:我可从何处了解有关 Azure Artifacts 的更多信息?
答:Azure Artifacts 中的包管理
问:我可从何处了解有关 .NET Core 命令的详细信息?
答:.NET Core CLI 工具
问:我可从何处了解有关在解决方案中运行测试的详细信息?
答:在 .NET Core 项目中进行单元测试
答:生成和发布任务