2017-08-31 66 views
3

我有一个以.NET Framework 4.6.1和.NET Standard 2.0为目标的csproj。VS2017的MSBuild无法编译.NET标准2.0项目

它可以在我的本地机器上使用Visual Studio 2017年(v15.3.2)

现在我建立我们的建筑服务器(詹金斯),包括这个项目进行编译。我们的构建服务器对其他.NET Framework 4.6.1项目工作正常。

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

然后我配置詹金斯使用的MSBuild v15.3.409.57025,这是从C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe

复制,但它会导致下面的错误在编译

C:\ Program Files文件 (86 )\ MSBuild \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.NET.TargetFrameworkInference.targets(126,5): 错误:当前.NET SDK不支持以.NET标准 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

有谁知道如何解决它?

感谢

+0

我怀疑应对VS安装文件夹就够了 - 毕竟VS不是xcopy-deployable。如果您不能或不想在生成服务器上安装VS,请考虑[安装](https://stackoverflow.com/a/42697374/21567)构建工具(仅适用于2017)。 –

+0

@ Christian.K,复制MSBuild始终是我的经验。我将尝试在构建服务器上安装VS2017,但我认为这不是原因 –

+0

构建工具现在(15.3)具有必需的SDK解析器,但缺少.NET Core/Standard项目所需的集成NuGet支持,因此“完整“版本仍然需要(直到大概15.4)。 –

回答

4

你还需要安装.NET核心2.0.0 SDK,因为安装VS仅包括1.1.0的任务和目标,并寻找其他已安装的版本是与当前的MSBuild版本兼容(或有是项目中的一个global.json文件,它钉住了不同的版本)。

+0

为了完整起见:在安装SDK后,需要重新启动VS,以便正确识别所有内容。 –