【问题标题】:Could not load file or assembly System, Version=2.0.5.0 in .NET 4 MVC 4 application无法在 .NET 4 MVC 4 应用程序中加载文件或程序集系统,版本 = 2.0.5.0
【发布时间】:2014-07-17 04:57:39
【问题描述】:

一直在寻找年龄,找不到任何有用的东西。这是我得到的例外:

Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) 

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)

Stack Trace: 

[FileLoadException: Could not load file or assembly 'System, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e, Retargetable=Yes' or one of its dependencies. The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047)]
StructureMap.Graph.PluginGraph..ctor() in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\Graph\PluginGraph.cs:41
StructureMap.PluginGraphBuilder..ctor() in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\PluginGraphBuilder.cs:22
StructureMap.InitializationExpression..ctor() in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\InitializationExpression.cs:22
StructureMap.ObjectFactory.Initialize(Action`1 action) in c:\BuildAgent\work\996e173a8ceccdca\src\StructureMap\ObjectFactory.cs:47
...

此应用程序在测试服务器上运行良好,但在生产服务器上抛出此异常。如您所见,StructureMap 代码是导致异常的原因。

我不得不将此应用程序从 4.5 转换为 .NET 4,因为生产服务器上没有安装 4.5。转换后,该应用程序在我的本地机器和测试服务器上仍然可以正常运行。

我已经将 System 程序集的 Copy Local 设置为 True,但是由于引用的版本是 4.0.0.0 而不是 2.0.5.0,所以我这没什么区别。

如果需要更多信息,请告诉我。感谢您提供任何帮助。

【问题讨论】:

  • 是否检查过 web.config 文件是否存在指向错误版本的程序集重定向?
  • 是的,没有重定向。我实际上尝试添加从 2.0.5.0 到 4.0.0.0 的重定向,但这似乎没有效果。

标签: c# asp.net-mvc


【解决方案1】:

从只有 VS2017 和 Silverlight 5 SDK 的机器配置开始,我在上面安装了 VS2015。这是我开始遇到 System.Core 和 System.Windows 问题的时候。

当我卸载 VS2015 并重新安装 Silverlight 5 SDK 后,这些问题就消失了。

【讨论】:

    【解决方案2】:

    我发现给我带来麻烦的是“等待”和“异步”。

    我有只有 .NET 4.0 的 Windows XP SP3,但必须使用 KB2600211 将其更新到 .NET 4.0.3 - 由于计算机已关闭,当 .NET 4.0.3 出现时,这并没有通过 Windows 更新自动更新-网格。

    这是更新的链接:

    https://www.microsoft.com/en-us/download/details.aspx?id=29053

    【讨论】:

    • 你太棒了,为我节省了几个小时!谢谢
    【解决方案3】:

    通过以下链接安装 Microsoft® Silverlight® 5 SDK。它可以解决并且对我来说很好。

    SDK download

    【讨论】:

    • 不确定在他可能不需要的情况下依赖 SilverLight 是一个很好的解决方案。
    【解决方案4】:

    我只想分享here 的另一个解决方案,它解决了我的开发机器上的问题:安装Silverlight 5 SDK(在撰写本文时只有 11.2MB)足以让一切正常工作。

    【讨论】:

      【解决方案5】:

      确保您的 .NET 框架已打补丁。Microsoft 发布了 .NET 补丁,以允许可移植类库正确找到合适的运行时 (KB2468871)。如果您看到上述异常(或类似情况),则意味着您缺少最新的 .NET 框架补丁。

      【讨论】:

      • 我认为这正是问题所在。不幸的是,这是一个生产服务器,我没有安装更新的权限。我最终只是将应用程序重构为不使用 StructureMap。
      • 不错。那篇链接的知识库文章解决了我遇到的一个问题,即引用 PCL 程序集的 4.0 框架程序集无法加载。
      • 非常感谢。这解决了我们在有人意外卸载 4.0 框架后遇到的问题,即使我们的团队重新安装了它,我们仍然遇到错误。奇怪的是,在重新安装 4.0 后,我们运行了 Windows Update,它说没有可用的更新。需要手动下载并安装这个来修复它。
      • 我在一些运行 Windows 7 SP1 并安装了 .net 4.0 的客户 PC 上遇到了这个问题(没有检查它们是否已打补丁)。由于我单击一次部署先决条件需要带有 KB2468871 的 .net 4.0,我认为它们是。在通话情况下,我修复了安装 .net 4.5。还有什么可能导致这种情况?
      【解决方案6】:

      编辑 web.config 文件以删除正常操作不需要的引用:

      1 - 打开站点根目录中的 web.config 文件

      2 - 找到以下行并将其注释掉():xxxxx-是您的程序集名称。

      <add assembly="xxxxx", Version=2.0.5.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      

      3 - 保存并关闭 web.config 文件,然后重试

      【讨论】:

      • 该行不在 web.config 中,只有 1 个程序集:
      • 您是否将任何类库项目添加到您的应用程序?如果是,请检查它的参考。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多