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

附加信息:无法加载 文件或程序集 “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相反的参考。

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


当前回答

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

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

其他回答

这个问题发生在我身上,我的一个依赖库正在用“Any CPU”编译DLL,而父库期望编译“x64”。

尝试清除解决方案中的调试和发布文件夹。然后再次删除并添加unity。

我执行以下操作来确定无法找到哪个依赖项。

运行regedit.exe并导航到:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

创建以下内容:

LogFailures set value to 1 (DWORD)
LogResourceBinds set value to 1 (DWORD)
LogPath (String) set value to C:\FusionLog\

现在运行程序并等待它抛出无法加载文件或程序集或其依赖项之一。

使用资源管理器,导航到C:\FusionLog,应该有一个文件夹包含你的程序的日志,显示哪个依赖项丢失了。

注意:有些人使用FUSLOGVW.exe,它是这些融合日志的查看器。在我的机器上可以在多个地方找到它,包括:

C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools\x64\FUSLOGVW.exe

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

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

如果你在Windows xp上打开一个应用程序时得到这个错误消息,这意味着你首先安装了这个应用程序,因为它不能在没有net framework 4和service pack 3的情况下工作。你安装了两者,再次得到这个错误,所以你应该重新安装该应用程序,但首先从添加和删除卸载

如果这不是工作,请不要虐待我。我也是一名大三学生