【发布时间】: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