首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载文件或程序集“系统”、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089或其依赖项之一

无法加载文件或程序集“系统”、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089或其依赖项之一
EN

Stack Overflow用户
提问于 2013-07-15 07:15:47
回答 13查看 187.8K关注 0票数 52

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

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

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

我有一个外接程序,它使用WCF连接到服务器。内置的内置.NET框架3.5与VS 2008.

该错误在一个用户帐户中的一台测试机器上是可重复的。我安装了我的应用程序,并且只能在这台机器上的一个帐户上复制这个程序,其他地方都很好。此外,只有一个版本的主机应用程序是可以复制的,我为其创建了外接程序(我假设它使用了不同的.NET框架)。

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

代码语言:javascript
复制
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加载程序来加载Version=4.0.0.0 of System.dll。在构建机器上,我指的是2.0.0.0版本的System.dll

EN

回答 13

Stack Overflow用户

发布于 2013-11-03 07:29:18

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

无法加载文件或程序集“.,Version=.,Culture=neutral,PublicKeyToken=.”或者它的依赖关系之一。系统找不到指定的文件。

在我的特殊情况下,它是AjaxMin,因此实际的错误看起来如下所示,但细节并不重要:

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

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

  1. 为解决方案打开了NuGet包还原。
  2. 添加了一个项目,并在其中安装了一个Nuget包(本例中为AjaxMin)。
  3. 该项目已移至解决方案中的不同文件夹。
  4. Nuget软件包被更新为较新的版本。

慢慢地,这个bug开始出现在一些用户身上。

原因是解决方案级别的包/respositories.config保留了旧的项目引用,现在有了一个新的,第二个移动项目条目。换句话说,在reorg之前就有这样的情况:

代码语言:javascript
复制
  <repository path="..\Old\packages.config" />

在重组之后:

代码语言:javascript
复制
  <repository path="..\Old\packages.config" />
  <repository path="..\New\packages.config" />

因此,第一行现在引用的是一个项目,在磁盘上,不再是我的解决方案的一部分。

打开Nuget包还原后,将读取两个packages.config文件,每个文件都指向自己的Nuget包和包版本列表。然而,在Nuget包更新为更新版本之前,没有任何冲突。

但是,一旦更新了Nuget包,只有活动项目才会更新其存储库列表。NuGet包还原选择只下载一个版本的库,这是它在repositories.config中遇到的第一个版本,后者是旧版本。编译器和IDE继续进行,好像它选择了较新的编译器。结果是一个运行时异常,表示DLL丢失了。

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

票数 6
EN

Stack Overflow用户

发布于 2016-05-29 18:33:24

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

要解决这个问题,我必须进入“项目-属性-设置”窗口,删除所有设置,保存项目,退出并重新启动visual studio,返回“项目-属性”-settings窗口,并重新输入所有设置及其默认值。

票数 3
EN

Stack Overflow用户

发布于 2017-12-29 06:14:50

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17648647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档