.net core Azure DevOps管道可以';我看不到.NETCore3.1SDK,但它';这是唯一安装的版本
在网上有几个地方,人们提到Azure DevOps在使用.NET Core 3.1 SDK等方面存在问题。通常建议使用.net core Azure DevOps管道可以';我看不到.NETCore3.1SDK,但它';这是唯一安装的版本,.net-core,azure-devops,.net Core,Azure Devops,在网上有几个地方,人们提到Azure DevOps在使用.NET Core 3.1 SDK等方面存在问题。通常建议使用use.NET Core任务将Azure DevOps从以前的任何版本切换到3.1,这通常是可行的 在我的情况下,Azure DevOps仍然无法判断是否安装了3.1。即使我登录到代理机器(我们使用自己的代理),卸载除3.1 SDK之外的所有东西,然后重新启动,Azure DevOps仍然尝试使用2.0或其他东西 在执行Visual Studio build任务之前,我有一个带有
use.NET Core
任务将Azure DevOps从以前的任何版本切换到3.1,这通常是可行的
在我的情况下,Azure DevOps仍然无法判断是否安装了3.1。即使我登录到代理机器(我们使用自己的代理),卸载除3.1 SDK之外的所有东西,然后重新启动,Azure DevOps仍然尝试使用2.0或其他东西
在执行Visual Studio build
任务之前,我有一个带有以下脚本的命令行
任务:
dotnet --info
这将产生以下内容,减去开头和结尾的一些额外文本:
.NET Core SDK (reflecting any global.json):
Version: 3.1.102
Commit: 573d158fea
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17763
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.102\
Host (useful for support):
Version: 3.1.2
Commit: 916b5cba26
.NET Core SDKs installed:
3.1.102 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.App 3.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
下一个任务是Visual Studio build,它列出了如下错误:
##[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets(112,5): Error : The current .NET SDK does not support targeting .NET Core 3.1. Either target .NET Core 1.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1.
.
.
.
##[error]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets(126,5): Error : The current .NET SDK does not support targeting .NET Standard 2.0. Either target .NET Standard 1.6 or lower, or use a version of the .NET SDK that supports .NET Standard 2.0.
无论是否包含Use.NET Core
任务,它基本上都是这样做的
在从计算机上卸载.NET Core 2.1 SDK之前,它将尝试使用.NET Core 2.1,而不是1.1。在这种情况下,错误将要求2.1
在2.1之前,如果我使用Use.NET Core
并将其设置为3.1.x
,它将成功运行,但构建任务将抛出与上述基本相同的错误,甚至拒绝使用2.1。
请注意,这是一个VS2017项目,操作系统版本为Microsoft Windows Server 2019数据中心
…为什么它看不到3.1 SDK?我无法评论(业力不够),但听起来你试图使用错误的构建过程编译.NET核心项目。看起来您正试图让Visual Studio 2017构建一个核心项目,而在Azure DevOps中,.Net核心任务下有一个核心构建任务
如果它是一个真正的Core3项目,那么使用“.NETCore”任务来运行您的构建
我们在DevOps管道中使用以下内容:
- 使用.NET Core(设置机器上的版本)(您已经完成了此操作 位)李>
- .Net核心任务->还原
- .Net核心任务->构建
- .Net核心测试->测试
- .Net核心任务->发布
- 使用.NET Core(设置机器上的版本)(您已经完成了此操作 位)李>
- .Net核心任务->还原
- .Net核心任务->构建
- .Net核心测试->测试
- .Net核心任务->发布
如果您想知道这里发生了什么,VisualStudio只针对完整的框架,或者VS版本在其构建步骤中知道的.Net核心版本(这就是为什么会出现SDK错误)。当您在visual studio中开发时,它可以针对您在本地计算机上安装的任何core vesion,因为它正在读取您的csproj文件设置以查找要针对的版本,然后visual studio将有效地“shell”输出到本地core安装以进行生成。DevOps无法做到这一点,因为随Visual Studio构建步骤安装的工具与您的本地计算机不同,只能针对特定的SDK,或者在代理上安装VS2019,并确保代理版本支持VS2019附带的MsBuild版本。谢谢,伙计,这很好,特别是您添加的用于描述问题根源的解释。请确保在代理上安装VS2019,并确保代理版本支持VS2019附带的MsBuild版本。谢谢,伙计,这很尖锐,尤其是添加的用于描述问题根源的解释。