.net core Azure管道中的dotnet还原任务突然开始使用.NET core 3.0 SDK,而不是2.2,破坏了我的管道

.net core Azure管道中的dotnet还原任务突然开始使用.NET core 3.0 SDK,而不是2.2,破坏了我的管道,.net-core,azure-devops,azure-pipelines,.net Core,Azure Devops,Azure Pipelines,我有一个长期稳定的Azure DevOps管道来部署.NET核心应用程序,在其中一个代理作业中,我有一些任务要使用dotnet ef命令部署(删除和重新创建)一些数据库。 这个发布管道从几个月以来一直工作顺利。 我在代理作业中显式使用.NET Core SDK 2.2,因此代理作业的第一个任务是安装SDK 2.2.100。此代理作业在带有VS2019代理池的托管Windows 2019上运行 问题是,几天前(9月27日),我在dotnet ef命令之前使用的dotnet restore任务,突

我有一个长期稳定的Azure DevOps管道来部署.NET核心应用程序,在其中一个代理作业中,我有一些任务要使用
dotnet ef
命令部署(删除和重新创建)一些数据库。 这个发布管道从几个月以来一直工作顺利。 我在代理作业中显式使用.NET Core SDK 2.2,因此代理作业的第一个任务是安装SDK 2.2.100。此代理作业在带有VS2019代理池的托管Windows 2019上运行

问题是,几天前(9月27日),我在
dotnet ef
命令之前使用的
dotnet restore
任务,突然开始使用.NET Core SDK 3.0,中断了我的管道,因为dotnet ef命令行工具不再作为SDK的一部分。与此相关的代码没有变化,管道也没有变化,所以我猜微软方面发生了一些变化

之前

之后:

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


是否有人知道这里发生了什么,或者有人可以帮助我修复我的管道,强制它使用SDK 2.2而不是SDK 3.0,因为它应该是这样的?

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

正如您已经描述的,VM现在使用最新版本的ASP.NETCore->3.0。 因此,我将下一步放在azure pipeline.yml的顶部

- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    packageType: 'sdk'
    version: '2.2.*'
这也可以通过使用任务菜单中具有正确设置的以下选项来实现。(使用项目的SDK版本)

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

我希望这个解决方案能起作用,这能回答你的问题

有人知道这里发生了什么吗?或者有人可以帮助我修复我的管道,迫使它使用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
在托管代理托管的Windows 2019和VS 2019上:

我得到了同样的结果:

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

此外,

所以我猜微软方面发生了一些变化

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

希望这有帮助。

只需搜索任务“使用.NET Core”,将其添加到“还原”任务之前,并设置所需的主要.NET Core版本


同样的问题,你找到解决方案了吗?我不得不使用“dotnet update--global dotnet EF”安装3.0版的EF工具,但我仍在寻找根本原因。你认为在管道中为netcore 2.2的代理设置“需求”会解决你的问题吗?我认为这与我的任务不同,但不确定。啊,对,他的是
use
,如果它不在那里,它可能不起作用,但我假设它不会出错-不会发生我正在使用此任务:
-任务:DotNetCoreInstaller@0displayName:“使用.NET Core sdk 2.2.100”输入:版本:2.2.100
您的任务将与3.0 sdk一起安装sdk,但管道仍将使用3.0 SDK。如果您使用
UseDotNet@2
它将安装正确的SDK并为该SDK设置路径变量,因此管道/VM将使用已安装的SDK。非常感谢!这就解决了问题!任务的旧版本看起来像一个bug,但版本2.*现在可以正常工作。