【问题标题】:MSBuild of VS2017 cannot compile .NET Standard 2.0 projectVS2017的MSBuild无法编译.NET Standard 2.0项目
【发布时间】:2018-02-09 07:15:06
【问题描述】:

我有一个针对 .NET Framework 4.6.1 和 .NET Standard 2.0 的 csproj。

可以在我的本地机器上用 Visual Studio 2017 (v15.3.2) 编译

现在我正在设置我们的构建服务器(Jenkins)来包含这个项目。我们的构建服务器适用于其他 .NET 框架 4.6.1 项目。

首先,我将工具链从本地机器 (C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\) 复制到构建服务器。

然后我将 Jenkins 配置为使用从 C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe 复制的 MSBuild v15.3.409.57025

但是编译时会出现如下错误

C:\程序文件 (x86)\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets(126,5): 错误:当前的 .NET SDK 不支持面向 .NET Standard 2.0。以 .NET Standard 1.6 或更低版本为目标,或者使用支持 .NET Standard 2.0 的 .NET SDK 版本。

文件Microsoft.NET.TargetFrameworkInference.targets 也是从我的本地计算机C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets 复制的。我在本地机器上检查了它的内容,看到下面一行。

<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

ToolsVersion 在我的 VS2017 目录中仍然是 14.0?

有人知道怎么解决吗?

谢谢

【问题讨论】:

  • 我怀疑在这里处理 VS 安装文件夹就足够了——毕竟 VS 不是 xcopy-deployable。如果您不能或不想在构建服务器上安装 VS,请仅考虑 installing 构建工具(适用于 2017 年)。
  • @Christian.K,根据我的经验,复制 MSBuild 总是有效的。我会尝试在构建服务器上安装 VS2017,但我认为这不是原因
  • 现在的构建工具 (15.3) 具有必要的 SDK 解析器,但缺乏 .NET Core/Standard 项目所需的集成 NuGet 支持,因此仍然需要“完整”版本(可能直到 15.4)。

标签: msbuild .net-standard .net-standard-2.0


【解决方案1】:

您还需要安装 .NET Core 2.0.0 SDK,因为 VS 安装仅包含 1.1.0 任务和目标,并会查找与当前 msbuild 版本兼容的其他已安装版本(或者有一个 global. json 文件在固定不同版本的项目中)。

【讨论】:

  • 为了完整起见:安装SDK后需要重启VS才能正确识别所有内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2017-11-07
  • 2019-01-18
  • 1970-01-01
相关资源
最近更新 更多