我有一个以.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
?
有谁知道如何解决它?
感谢
我怀疑应对VS安装文件夹就够了 - 毕竟VS不是xcopy-deployable。如果您不能或不想在生成服务器上安装VS,请考虑[安装](https://stackoverflow.com/a/42697374/21567)构建工具(仅适用于2017)。 –
@ Christian.K,复制MSBuild始终是我的经验。我将尝试在构建服务器上安装VS2017,但我认为这不是原因 –
构建工具现在(15.3)具有必需的SDK解析器,但缺少.NET Core/Standard项目所需的集成NuGet支持,因此“完整“版本仍然需要(直到大概15.4)。 –