【问题标题】:ASP.NET Core: A compatible SDK version for global.json version 2.1.400 was not foundASP.NET Core:未找到 global.json 版本 2.1.400 的兼容 SDK 版本
【发布时间】:2019-10-11 17:38:57
【问题描述】:

我的解决方案中有一个面向 .NET Core 2.1 的 ASP.NET Core 项目。我在解决方案级别添加了一个 global.json 文件:

{
  "sdk": {
    "version": "2.1.400"
  }
}

在 Team City 代理上,我安装了 MSBuild Tools 2017 (15.8.1),包括 .NET Core Build Tools。

从命令行我可以看到代理上安装了 SDK 2.1.400:

>dotnet --list-sdks
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]

但是,在 Team City 上构建解决方案失败并出现以下错误:

dashboard.csproj : error : Unable to locate the .NET Core SDK. Check that it is installed and that the version specified in global.json (if any) matches the installed version.
Dashboard.csproj : error MSB4236: The SDK 'Microsoft.NET.Sdk.Web' specified could not be found.
A compatible SDK version for global.json version: [2.1.400] from [X:\agent-1\sandbox1\global.json] was not found

知道为什么在使用 MSBuild 构建时找不到 SDK 2.1.400,因为它存在于 SDK 列表中?

【问题讨论】:

  • 您的 Tean City 代理是使用特定用户还是系统帐户运行的?
  • 是的,但是,我在该帐户下运行了dotnet --list-sdks,响应列表为2.1.400

标签: asp.net-core msbuild


【解决方案1】:

我终于发现dotnet 在 Team City 上运行时未被识别为命令(尽管 dotnet 在同一 Windows 帐户下被识别为提示符下的命令)。

我的解决方案是使用 Team City 参数更新 PATH 环境变量:

Name: env.PATH
Kind: Environment Variable
Value: C:\Program Files\dotnet;%env.PATH%

它现在按预期工作。

【讨论】:

  • 这也适用于 Jenkins 在环境变量的全局配置下。感谢您的提示!
【解决方案2】:

验证 PATH 环境变量是否指向安装 SDK 的位置(C:\Program Files\dotnet\ 用于 64 位/x64 或 C:\Program Files (x86)\dotnet\ 用于 32 位/ x86)。 SDK 安装程序通常会设置 PATH。始终在同一台机器上安装相同的位数 SDK 和运行时。

【讨论】:

  • 验证包含您想要的所有 SDK 的位置“C:\Program Files\dotnet\”,然后将其添加到环境变量 C:\Program Files\dotnet\ 中的 PATH 中
猜你喜欢
  • 2018-10-30
  • 2016-12-26
  • 1970-01-01
  • 2018-07-17
  • 2020-10-19
  • 2021-03-31
  • 2022-11-04
  • 2022-11-13
相关资源
最近更新 更多