我有另一个这些“无法加载文件或程序集或其依赖项之一”的问题。

附加信息:无法加载 文件或程序集 “Microsoft.Practices.Unity, Version = 1.2.0.0、文化=中立, 都31 bf3856ad364e35”或 它的依赖项之一。在位于 程序集的显式定义可以 不匹配程序集引用。 (异常来自HRESULT: 0x80131040)

我不知道是什么导致了这种情况,也不知道如何调试它来找到原因。

我在我的解决方案目录.csproj文件中做了一个搜索,我有Unity的每个地方:

参考 包括= " Microsoft.Practices.Unity, Version = 2.0.414.0、文化=中立, 都31 bf3856ad364e35, processorArchitecture = MSIL”

在我的任何项目中都找不到任何与1.2.0.0相反的参考。

我该怎么解决这个问题呢?


当前回答

注意相互矛盾的参考资料。即使在清理和重新构建之后,冲突的引用仍然会导致问题。我的问题是在AForge和Accord之间。我删除了这两个引用,并重新添加了引用,重新选择了特定的引用(针对我的情况,只是Accord)。

其他回答

检查你是否引用了一个程序集,而这个程序集又引用了一个旧版本的unity。例如,假设你有一个名为ServiceLocator.dll的程序集,它需要一个旧版本的Unity程序集,现在当你引用ServiceLocator时,你应该为它提供旧版本的Unity,这就产生了问题。 可能是所有项目构建其程序集的输出文件夹,有一个旧版本的unity。

你可以使用FusLogVw找出谁在加载旧的程序集,只需要为日志定义一个路径,并运行你的解决方案,然后检查(在FusLogVw中)Unity程序集加载的第一行,双击它并查看调用程序集,然后就可以了。

好吧,这听起来可能很愚蠢,但在尝试了所有其他解决方案并花了一个晚上在这个愚蠢的事情上之后,我是如何解决这个问题的。

我得到了相同的错误,一些DLL从Bin文件夹丢失。 我试着删除,从teamfoundationserver上恢复所有东西,但没有用。 从我办公室的本地电脑上拿了一份Bin文件夹,把它换掉了。它也没起作用。 最后,我手动ftp服务器,得到了显示为丢失的DLL副本,然后它开始显示文件列表序列中的下一个文件丢失。

所以我ftped服务器得到所有的Bin文件夹,手动替换每个文件一个接一个。(不是Ctrl + All和替换..我试过了,但没有用。) 不知怎的,它起作用了……

对我来说,其他的解决方案都不起作用(包括清洁/重建策略)。我找到了另一个解决方案,即关闭并重新打开Visual Studio。

我想这会迫使Visual Studio重新加载解决方案和所有项目,重新检查流程中的依赖项。

下面的方法对我很有效。

删除临时文件C:\Windows\Microsoft.NET\Framework\v4.0.30319\临时ASP. net网络文件 关闭VSTS,然后重新打开 删除和添加相同的dll(注意:您添加了相同的匹配版本)

在99%时,无法加载文件或程序集或其依赖项之一的问题是由依赖项引起的!我建议你遵循以下步骤:

从http://www.dependencywalker.com/下载Dependency Walker 启动Dependency Walker并打开dll(在我的例子中是NativeInterfaces.dll) 您可以看到一个或多个dll的错误在红色错误打开文件…

这意味着这个dll在你的系统中丢失了;在我的情况下,dll名称是MSVCR71.DLL 您可以从谷歌下载丢失的dll,并复制到正确的路径(在我的情况下c:\windows\system32) 此时,您必须在GAC(全局程序集缓存)中注册新的dll:打开DOS终端并写入: cd \ Windows \ System32系统 Regsvr32 /i msvcr71.dll 重新启动应用程序