在.NET 4 MVC 4应用程序中无法加载文件或程序集System,Version=2.0.5.0。

26

我已经搜索了很久,但没有找到任何有用的东西。这是我得到的异常:

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代码是导致异常的原因。

我不得不将这个应用从.NET 4.5转换到.NET 4,因为生产服务器上没有安装.NET 4.5。转换后,在我的本地机器和测试服务器上,这个应用仍然可以正常工作。

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

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


1
你是否检查了 web.config 文件,看看是否有指向错误版本的程序集重定向? - 3dd
是的,没有重定向。我实际上尝试将从2.0.5.0到4.0.0.0的重定向添加进去,但貌似没有任何效果。 - tarnold86
6个回答

43

确保您的.NET框架已经打了补丁。微软发布了.NET的补丁,以便便携式类库可以正确地找到适当的运行时(KB2468871)。如果您看到上述异常(或类似异常),意味着您缺少最新的.NET框架补丁。


1
我认为这正是问题所在。不幸的是,这是一个生产服务器,我没有权限安装更新。最终,我只好重构应用程序,不再使用StructureMap。 - tarnold86
不错。那篇链接的知识库文章解决了我遇到的问题,即一个引用了PCL程序集的4.0框架程序集无法加载的问题。 - slugster
非常感谢。这解决了我们在某人意外卸载4.0框架后遇到的问题,即使我们的团队重新安装它,我们仍然会遇到错误。奇怪的是,在重新安装4.0之后,我们运行Windows更新,它说没有可用的更新。手动下载和安装这个才解决了问题。 - GR7
我在一些安装了Windows 7 SP1和.net 4.0的客户PC上遇到了这些问题(没有检查它们是否已打补丁)。由于我的ClickOnce部署先决条件需要.net 4.0和KB2468871,我认为它们已经安装了。在所有情况下,我通过安装.net 4.5来解决了问题。还有什么其他原因可能导致这种情况? - Igor Kondrasovas

1

编辑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个程序集:<assemblies> <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /></assemblies> - tarnold86
你是否在应用程序中添加了任何类库项目?如果是的话,请确保其引用也正确。 - Jay

1
我发现让我困扰的是"await"和"async"。
我使用的是Windows XP SP3,只有.NET 4.0版本,但必须使用KB2600211更新到.NET 4.0.3版本。由于计算机不联网,因此在.NET 4.0.3发布时无法通过Windows Update自动更新。
这是更新链接:

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


你太棒了,帮我省了好几个小时的时间!!谢谢。 - FindOutIslamNow

0

我只想分享另一个解决方案,来自这里,它解决了我的开发机上的问题:安装Silverlight 5 SDK(在撰写本文时仅为11.2MB)就足以使一切正常工作。


0
请从以下链接安装Microsoft® Silverlight® 5 SDK。对我来说,它解决了问题并且运行良好。

SDK下载


不确定在他可能不需要它的情况下依赖SilverLight是否是一个好的解决方案。 - Ian Robertson

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接