【问题标题】:Resolving multiple conflicting versions of System.Web.Mvc when using NuGet as package source使用 NuGet 作为包源时解决 System.Web.Mvc 的多个冲突版本
【发布时间】:2014-10-10 06:45:12
【问题描述】:

我在一个项目中发现同一程序集的多个版本时遇到问题。 System.Web.Mvc 例如:

我想确保我们的 MVC 项目永远不会从任何地方找到这样一个过时的dll,除了 NuGet 源。

我意识到从系统中删除冲突版本并不是一个好主意,因为很多应用程序可能都依赖于它们。比如这个发现在C:\Program Files (x86)

更新:

由于我们使用的是 NuGet,所以我更改了:

Project > Properties > Build > Output > Output path:C:\Temp\Drop

在每个项目中(我们也有一些可移植区域类库项目)然后

Project > Properties > Reference Paths 并添加了C:\Temp\Drop

问题就解决了。

这是正确的处理方式还是我只是在这里打开另一个关于蠕虫的罐子?

【问题讨论】:

  • 你有 resharper 或其他类似的插件吗?
  • GAC 在运行时使用 - Visual Studio 在设计/编译时不使用它。但是,您得到的是对版本 4.0.0.0 的引用,它不是来自 GAC。
  • 是的,我注意到了,它正在寻找不同的位置。某处 C:\Program Files (x86)
  • 我刚刚编辑并重新确定了问题的范围,因为这首先与 GAC 无关。
  • 如果它不是 GAC,那么您的修复将起作用,它类似于 Windows 中二进制探测的系统路径,但是您需要确保所有已部署系统上的路径相同/相似

标签: c# asp.net-mvc visual-studio assembly-reference-path


【解决方案1】:

查看以下关于程序集绑定和探测的文章,相当不错:

MSDN - Assembly Probing

也检查这个Article

有一个完整的层次结构用于查找程序集,对于强命名程序集 GAC 将是第一位的,在您的情况下,您使用的是强命名程序集。如文章中所述,您应该能够在运行时将您的应用程序定向到正确的程序集版本

【讨论】:

  • 谢谢,我一定会看看那些 :)
猜你喜欢
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-02
  • 2019-10-30
  • 1970-01-01
相关资源
最近更新 更多