Pan*_*sis 1 .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任务之前,我有一个Command line带有以下脚本的任务:
dotnet --info
Run Code Online (Sandbox Code Playgroud)
这会产生,减去开头和结尾的一些额外文本,如下:
.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]
Run Code Online (Sandbox Code Playgroud)
下一个任务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.
Run Code Online (Sandbox Code Playgroud)
无论我是否包含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 Datacenter.
...为什么看不到3.1 SDK?
我无法评论(Karma 不够),但听起来您正在尝试使用错误的构建过程编译 .NET 核心项目。看起来您正在尝试让 Visual Studio 2017 构建一个 Core 项目,但在 Azure DevOps 中,.Net Core 任务下有一个 Core 构建任务。
如果它是一个真正的 Core 3 项目,请使用“.NET Core”任务来运行您的构建。
我们在 DevOps Pipeline 中使用以下内容:
您实际上是在告诉 DevOps 使用旧版本的 Visual Studio Build 引擎,该引擎不了解您尝试使用的 .Net Core 运行时来构建您的项目。
如果您想知道这里发生了什么,Visual Studio 仅针对完整框架或 VS 版本在其构建步骤中知道的 .Net 核心版本(这就是您收到 SDK 错误的原因)。当您在 Visual Studio 中进行开发时,它可以针对您安装在本地机器上的任何核心版本,因为它正在读取您的 csproj 文件设置以查找要定位的版本,然后 Visual Studio 有效地“外壳”到本地核心安装为构建。DevOps 不能这样做,因为随 Visual Studio Build 步骤安装的工具与您的本地机器不同,并且只能针对某些 SDK
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |