升级到 .NET Framework 4.6 不在 Windows 2012 Jenkins 服务器上构建

Upgrade to .NET Framework 4.6 not building on Windows 2012 Jenkins server

我们有一个新的 Windows 2012 服务器,我一直将其用作我们的 Jenkins 构建服务器。我的应用程序已成功使用 .NET Framework 4.5 构建,但当我们升级到 .NET 4.6 时,构建已停止工作。

查看日志我看到这个错误:

RateCalculator.cs(49,13): error CS0012: The type 'System.Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

我的应用程序中没有 Web.config,只有 Application.config 文件。我试过添加这个:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

然而它并没有解决错误。

我们通过检查 Windows 更新和注册表仔细检查了 .NET Framework 4.6 是否安装正确。

在我的本地开发环境中,它在 Visual Studio 2015 运行 Windows 7 上编译时正确构建。 Jenkins 构建服务器在 Windows 2012 服务器上有 Visual Studio 2012,这就是出现错误的地方。

所以我通过在我的 Windows 2012 服务器上安装 .NET Framework 4.6 Targeting pack 解决了这个问题。

如果您使用的是 Visual Studio 2012 并希望使用 .NET 4.6,那么您需要在安装目标包之前下载并安装 .NET Framework 4.6。

感谢 Hans Passant 和其他人帮助我找到目标包。

我从以下位置安装它:https://www.microsoft.com/en-us/download/details.aspx?id=48136