首页 > 解决方案 > 强制应用程序使用 NuGet 版本的库而不是 GAC

问题描述

我有一个针对 .NET 4.6 的控制台应用程序,它依赖于 NuGet 包 System.Net.Http v2.0.20126.16343。一切正常,直到我决定将我的 Visual Studio 安装从 15.2 (26430.14) 升级到 15.7.1 (27703.2000) 因为通知。

升级后,我的应用程序无法构建,并且即使包存在,我也会在 System.Net.Http 上获得缺少的引用。如果我再次删除并添加包,Visual Studio 会从 GAC 引用库,而不是包文件夹。

如果我将 System.Net.Http 包升级到 v4.3.3,我可以让我的应用程序成功构建的唯一方法,但由于我无法控制的限制,我现在无法升级任何 NuGet 包。由于外部限制,我也将无法卸载 Visual Studio 并再次返回 v15.2。

有什么方法可以解决这个问题并在使用 VS 15.7.1 时继续使用 System.Net.Http 的 v2.0.20126?

感谢你的帮助!

标签: .netvisual-studio-2017nugetnuget-package

解决方案


强制应用程序使用 NuGet 版本的库而不是 GAC

那是因为您的控制台应用程序针对.NET 4.6. nuget 包用于.NET 4.0(<4.5),其中System.Net.Http不存在。当您的应用程序以 为目标.NET Framework 4.5+时,它只会转发到System.Net.Http哪个是平台的一部分。

这是在 .NET Framework 4.5+ 上运行的应用程序设计的。

因此,要解决此问题,您可以将项目切换到 .NET 4.0 配置文件:

  1. 将我的项目切换到 .NET 4.0 配置文件。
  2. 已卸载 Web API NuGet 包。
  3. 再次安装 Web API (Beta) NuGet 包。
  4. 验证 .csproj 文件包含所有引用的程序集,因此它将始终从 Bin 文件夹而不是 GAC 中获取。

认证:无法在 MVC4 Web API 中加载文件或程序集 'System.Net.Http,版本 = 2.0.0.0

如果您不想将项目切换到 .NET 4.0,可以尝试 magicandre1981 的建议,将该包更新为 4.1.0+,其中包括 .net 4.6 库。

此外,您可以参考此线程以获取更多详细信息。

希望这可以帮助。


推荐阅读