在Azure DevOps的构建流程中使用.NET SDK代理失败

21

我有一个ASP.NET Core 2.1,并添加了一个Microsoft.WindowsAzure.Storage的NuGet包。但是在将代码推送到仓库后,构建管道运行构建代理时发生包错误问题。在构建管道中除了BUILD、RESTORE、TEST和PUBLISH之外,是否需要添加其他代理?

[error]错误:进程'C:\hostedtoolcache\windows\dotnet\dotnet.exe'以退出代码1失败

信息:Azure Pipelines托管代理已更新为包含.Net Core 3.x SDK/Runtime以及2.2和2.1。除非您已锁定项目的SDK版本,否则可能会选择3.x SDK,这可能会与早期版本相比具有破坏性行为。

这是它在运行管道时显示的错误。


在你的 restore, build, test, publish task 之前添加一个 use .net core 任务,在其中指定版本为 2.1.x,问题就会消失。 - LoLance
4个回答

25
正如错误信息所示,不建议使用最新的3.x版本SDK来恢复、构建、测试、发布针对asp.net core 2.1的项目。尽管在大多数情况下,构建可以通过,但是发布步骤(任务)可能会遇到此问题:

enter image description here

解决问题:

在运行restore,build,test,publish等任务之前,我们应该指定要使用的.net core sdk版本...

我们可以像这样在其他 .net core 任务之前添加use .net core sdk task,以选择相关的.net core 2.1.x版本来执行以下任务,而不是使用.net core 3.x sdk

经典 UI:

enter image description here

指定 2.1.x+Include Preview Versions 将获取最新版本的 2.1 sdk。

Yaml:

如果您使用 yaml 格式而不是经典 UI 格式来配置管道,则其 yaml 格式类似于此:

steps:
- task: UseDotNet@2
  displayName: 'Use .Net Core sdk 2.1.x'
  inputs:
    packageType: sdk
    version: 2.1.x
    installationPath: $(Agent.ToolsDirectory)/dotnet
    includePreviewVersions: true

希望这有所帮助,如果我有任何误解,请随时纠正。 :)

错误是在构建或发布步骤中发生的吗(对我来说,在尝试重现问题时出现了)?不建议使用3.x,因为当管道选择.net core 3而您的项目针对.net core 2.1时,原始问题会发生。尝试使用精确版本此处,例如2.1.802... - LoLance
再次出现了3.x相同的错误...##[error]错误: 进程'C:\hostedtoolcache\windows\dotnet\dotnet.exe'退出代码为1 信息: Azure Pipelines托管代理已更新,包含.Net Core 3.x SDK/Runtime和2.2&2.1。除非您已锁定项目的SDK版本,否则可能会选择3.x SDK,其行为与以前的版本相比可能会有所不同。 一些常见的更改是: - Vignesh Arvind
如果您想要,我可以分享我的YAML。 - Vignesh Arvind
@VigneshArvind 您可以通过更新问题来分享它。只是为了确保,如果您使用的是 .NET Core 2.1.802,则错误信息“Azure Pipelines 托管代理已经更新,包含 .Net Core 3.x SDK/Runtime 以及 2.2 和 2.1。”是否仍然存在?是否有可能,“但仍然没有起作用”指的是生成“dotnet.exe 退出错误”的另一个问题? - LoLance
让我们在聊天中继续这个讨论 - Vignesh Arvind
显示剩余10条评论

8

我曾经在使用2.1.505版本时遇到过相同的问题,现在在使用3.1.101版本时,我在yaml管道中为变量和.NET Core安装程序步骤使用了下面的配置,这解决了我的问题。

variables:
  buildConfiguration: 'Release'
  dotnetSdkVersion: '3.1.101'

steps:
- task: DotNetCoreInstaller@0
  displayName: 'Use .NET Core SDK $(dotnetSdkVersion)'
  inputs:
    version: '$(dotnetSdkVersion)'

2
以下步骤对我有效:
  • 在还原任务之前添加一个名为“使用 .Net Core”的任务
  • 指定所需的 SDK 版本,以 'x' 结尾。例如:2.x
  • 勾选“包括预览版本”选项

请务必检查你的SDK版本 https://learn.microsoft.com/en-us/dotnet/core/install/how-to-detect-installed-versions?pivots=os-windows 并将最新版本插入到任务的版本中。 - Kris Kilton

-1

将以下代码添加到 .csproj 文件的 PropertyGroup 标签中

<TargetLatestRuntimePatch>false</TargetLatestRuntimePatch>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接