Azure Pipelines中的dotnet还原任务突然开始使用.NET Core 3.0 SDK(而不是2.2),这打破了我的管道

时间:2019-10-01 01:03:34

标签: .net-core azure-devops azure-pipelines

我有一个长期稳定的Azure DevOps管道来部署.NET核心应用程序,并且在其中一个代理作业中,我有一些任务要使用[ { "tagName": "foo", "propA": "A", "propA": "B" }, { "tagName": "bar", "propA": "A", "propA": "B" } ] 命令来部署(删除和重新创建)某些数据库。 从现在开始,这个发布渠道一直在顺利进行。 我在代理作业中明确使用了.NET Core SDK 2.2,因此代理作业的第一个任务是安装SDK 2.2.100。此代理作业在带有VS2019代理池的托管Windows 2019上运行。

enter image description here

问题在于,几天前(9月27日),我在使用dotnet ef命令之前正在使用dotnet restore任务,突然开始使用.NET Core SDK 3.0 ,这打破了我的工作流程,因为SDK不再包含dotnet ef命令行工具。与之相关的代码也没有任何变化,也没有任何变化,所以我想微软方面有所改变。

之前

enter image description here

之后:

enter image description here

我设法解决了这个问题,添加了一个新任务来安装EF工具(dotnet ef),但这只是一个补丁。我需要了解错误的根本原因,以便了解管道或解决方案是否有问题-

有人知道这里发生了什么吗,还是有人可以帮助我修复管道,以使其强制使用SDK 2.2而不是应该使用SDK 3.0?

3 个答案:

答案 0 :(得分:2)

上周五,我在管道中遇到了相同的问题。 构建失败,因为SDK无法识别正在执行的命令。

正如您已经描述的那样,VM现在使用最新版本的ASP .NET Core-> 3.0。 因此,我将下一步放在了Azure管道的顶部。yml。

- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    packageType: 'sdk'
    version: '2.2.*'

这也可以通过使用“任务”菜单中的以下选项进行正确设置来实现。 (使用您项目的SDK版本)

Tasks menu icon configuration

这可确保VM安装并使用正确版本的.NET Core SDK。 由于此更改,项目的构建在管道中使用.NET Core 2.2。*而不是.NET Core 3.0。

我希望该解决方案有效,并且可以回答您的问题。

答案 1 :(得分:2)

  

有人知道这里发生了什么吗,还是有人可以帮助我修复管道,以使其强制使用SDK 2.2而不是应该使用SDK 3.0?

我已经复制了这个问题。那是因为您使用的是旧版本 DotNetCoreInstaller任务(0.*)。

要解决此问题,您需要使用最新版本(2.*),因此任务类似于:

- task: UseDotNet@2
  displayName: 'Use .Net Core sdk 2.2.100'
  inputs:
    version: 2.2.100

测试详细信息:

当我在托管代理上使用旧版本DotNetCoreInstaller@0时,在VS 2019上托管Windows 2019:

enter image description here

我得到了相同的结果:

enter image description here

但是当我将任务版本更改为UseDotNet@2时,它可以正常工作:

enter image description here

此外,

  

所以我想微软方面有所改变。

是的,微软于2019-09-23发布了.NET Core 3.0.0。然后,VM使用最新版本的ASP .NET Core 3.0.100

希望这会有所帮助。

答案 2 :(得分:-1)

只需搜索任务“ Use .NET Core”,将其添加到“ Restore”任务之前,然后设置所需的主要.NET Core版本。

enter image description here

enter image description here