无法加载文件或程序集’System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一

我在某些用户计算机上生成此exception(约20个中的1个):

无法加载文件或程序集’System,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一。 该系统找不到指定的文件。

我在网站和本网站上发现了几个对此错误的引用,但没有任何帮助。

我有一个使用WCF连接到服务器的加载项应用程序。 使用带有VS 2008的.NET Framework 3.5构建的加载项。

该错误只能在一个用户帐户中的一台测试机器上重现。 我安装我的应用程序,只能从这台机器上的一个帐户重现这个,除此之外它工作正常。 此外,它只能与我创建的加载项的一个版本的主机应用程序一起重现(我假设因为它使用了不同的.NET框架)。

我检查了保险丝日志,我看到以下内容:


Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorwks.dll Running under executable C:\Program Files\SolidWorks Corp\SolidWorks\sldworks.exe --- A detailed error log follows. === Pre-bind state information === LOG: User = Home\User LOG: DisplayName = System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 (Fully-specified) LOG: Appbase = file:///C:/Program Files/SolidWorks Corp/SolidWorks/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = NULL Calling assembly : System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. 

因此,由于某些原因,它试图使用v2.0.50727 \ mscorwks.dll加载程序加载版本= 4.0.0.0的System.dll。 在构建机器上,我指的是System.dll的2.0.0.0版本

任何帮助深表感谢。

谢谢,Artem

我有同样的问题 – 一些用户可以从git中拉出来,一切运行正常。 有些人会拉扯并得到一个非常相似的例外:

无法加载文件或程序集’…,Version = …,Culture = neutral,PublicKeyToken = …’或其依赖项之一。 该系统找不到指定的文件。

在我的特定情况下它是AjaxMin,所以实际的错误看起来像这样,但细节无关紧要:

无法加载文件或程序集’AjaxMin,Version = 4.95.4924.12383,Culture = neutral,PublicKeyToken = 21ef50ce11b5d80f’或其依赖项之一。 该系统找不到指定的文件。

事实certificate,这是对解决方案采取以下行动的结果:

  1. 已为解决方案打开NuGet Package Restore。

  2. 添加了一个Project,并在其中安装了Nuget包(在本例中为AjaxMin)。

  3. 项目已移至解决方案中的其他文件夹。

  4. Nuget包已更新为更新版本。

并且慢慢但肯定地,这个错误开始出现在一些用户身上。

原因是解决方案级别的packages / respositories.config保留了旧的Project引用,现在有一个新的第二个条目用于移动的Project。 换句话说,在重组之前它有这个:

   

在重组之后:

    

所以第一行现在指的是一个项目,虽然在磁盘上, 不再是我的解决方案的一部分

启用Nuget Package Restore后,正在读取两个packages.config文件,每个文件都指向他们自己的Nuget包和包版本列表。 然而,在将Nuget包更新为更新版本之前,没有任何冲突。

但是,一旦更新了Nuget包,只有活动的Projects会更新其存储库列表。 NuGet Package Restore选择只下载一个版本的库 – 它是在repositories.config中遇到的第一个版本,它是较旧的版本。 编译器和IDE继续进行,就好像它选择了较新的一样。 结果是运行时exception,说DLL丢失了。

答案显然是删除此文件中引用不在解决方案中的项目的任何行。

您正在使用.net 4? – 也许在客户端上只安装了“.net framework 4客户端配置文件”。 尝试安装完整的包!! 在这里下载

就我而言,通过在web.config文件中设置Debug = true,我能够找到ScriptManager的问题

我的答案太晚了,但它在我的案例中有效。如果您在项目中遇到此问题,请在您的web.config中添加以下行:

  

这适用于我的情况。 如果您的web.config中已经有编译标记,则只向其添加batch =“false”属性。

您可以启用NuGet包并更新您的dll。 这样才有用。 或者,如果你知道解决方案需要哪个版本,你可以通过你的vs中的包管理器手动更新包。

将项目从.net 4.5降级到.net 3.5后我得到了这个。

要解决我必须进入项目 – 属性 – 设置窗口并删除我的所有设置,保存项目,退出并重新启动visual studio,返回项目 – 属性 – 设置窗口并重新输入我的所有设置及其默认设置值

即使我有一些更奇怪的事情,我可以看到GAC中没有dll加载的地方但是Windows>模块显示system.dll版本= 4.0.0.0已加载

这对我有用。 转到Project-> Propertied-> Target Frawork->更改框架工作,如3.5到4.0

我在Linux下遇到了问题,我需要安装它们。 我不知道哪一个确实解决了这个问题,但之后错误消失了:

 apt-get install mono-utils mono-runtime-sgen mono-runtime-common \ mono-runtime-boehm mono-runtime-dbg mono-xbuild