无法加载文件或程序集';System,Version=4.0.0.0,Culture=neutral,Public

本文关键字:Version Public Culture System neutral 文件 加载 程序集 | 更新日期: 2023-09-27 18:22:31

我在一些用户机器上生成了这个异常(共20台):

无法加载文件或程序集"System,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'或其依赖关系。系统找不到指定的文件。

我在网上和这个网站上找到了几个关于这个错误的参考,但没有任何帮助。

我有一个外接程序,它使用WCF连接到服务器。使用带有VS 2008的.NET Framework 3.5构建的外接程序。

该错误可在一台测试机器上仅在一个用户帐户中重现。我安装了我的应用程序,只能从这台机器上的一个帐户复制它,其他地方都很好。此外,它只能用我为其创建的外接程序的一个版本的主机应用程序进行复制(我认为是因为它使用了不同的.NET Framework)。

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


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加载程序来加载System.dllVersion=4.0.0.0。在构建机器上,我指的是System.dll的2.0.0.0版本。

无法加载文件或程序集';System,Version=4.0.0.0,Culture=neutral,Public

我也遇到了同样的问题——一些用户可以从git中提取,一切都很好。有些人会拉并得到一个非常相似的例外:

无法加载文件或程序集"。。。,版本=。。。,区域性=中性,PublicKeyToken=…'或其依赖项之一。系统找不到指定的文件。

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

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

这是解决方案上以下操作的结果:

  1. 已为解决方案启用NuGet程序包还原。

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

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

  4. Nuget软件包已更新到更新的版本。

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

原因是解决方案级别的软件包/repositories.config保留了旧的Project引用,现在为移动的Project有了新的第二个条目。换句话说,它在重组前就有这样的情况:

  <repository path="..'Old'packages.config" />

重组后的

  <repository path="..'Old'packages.config" />
  <repository path="..'New'packages.config" />

因此,第一行现在指的是一个项目,当它在磁盘上时,不再是我的解决方案的一部分

在Nuget软件包还原打开的情况下,正在读取两个packages.config文件,每个文件都指向各自的Nuget软件包和软件包版本列表。然而,在Nuget包更新到新版本之前,没有任何冲突。

然而,一旦更新了Nuget包,只有活动项目的存储库列表才会更新。NuGet Package Restore选择只下载该库的一个版本——它在repositories.config中遇到的第一个版本,即旧版本。编译器和IDE就好像选择了新的一样。结果是运行时出现异常,称DLL丢失。

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

我是在将一个项目从.net 4.5降级到.net 3.5后得到的。

为了解决这个问题,我不得不进入项目-属性-设置窗口,删除所有设置,保存项目,退出并重新启动visual studio,回到项目-属性设置窗口,重新输入我的所有设置及其默认值

这对我很有效。转到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

我见过几次这种情况,通常通过在.NET Framework(应用程序尝试使用的任何版本)上运行修复来修复它。

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

在我的情况下,我能够通过在web.config文件

p>我回答得太晚了,但它对我的情况有效。如果您在项目中遇到此问题,请在web.config中添加以下行:
<compilation  batch="false" >

这对我来说是有效的。如果您的web.config中已经有compilation标记,那么只向其添加batch="false"属性。

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

即使我经历了一些更奇怪的事情,我也可以从加载dll的地方看到GAC中没有dll,但windows>Module显示system.dll版本=4.0.0.0已加载

我刚刚更改了我的目标.net框架,它起了作用。在我的情况下,我从.net 4.7更改为.net 4。右键单击解决方案并选择属性selct属性

单击应用程序>gt;目标框架

FileNotFoundException:无法加载文件或程序集"System.Configuration.ConfigurationManager,Version=7.0.0.0,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51"或其依赖项之一。系统找不到指定的文件。

这是我的问题。我在项目中安装了system.config程序集,还安装了其他类库。现在问题已经过去了。

我在aspcore.report中使用了net 6.0,我遇到了这样的问题我在服务器项目中安装了系统配置程序集问题解决了