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

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

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


当前回答

清理解决方案,然后右键单击项目并选择Package

在这里增加程序集和程序集文件版本并重新构建。

如果这行不通,

1 -在文件资源管理器中打开解决方案。

2 -关闭Visual Studio。

3 -删除所有bin和obj文件夹。

4 -重新打开项目并构建它。

其他回答

另一个可能的原因是:确保没有意外地在项目属性中为两个项目指定相同的程序集名称。

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

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

在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 重新启动应用程序

尽管最初的问题是五年前发布的,但这个问题仍然存在,而且相当烦人。

一般的解决方案是彻底分析所有引用的程序集,以了解哪里出了问题。为了使这个任务更容易,我做了一个工具(一个Visual Studio扩展),它允许选择一个. net程序集(一个.dll或.exe文件)来获得所有引用程序集的图形,同时突出显示冲突或缺失的引用。

该工具可在Visual Studio Gallery中获得:https://marketplace.visualstudio.com/vsgallery/051172f3-4b30-4bbc-8da6-d55f70402734

输出示例:

你必须从你的输出文件夹中删除你的appname.dll文件。 清理调试和释放文件夹。 重建并复制到输出文件夹重新生成的dll文件。