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

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

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


当前回答

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

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

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

输出示例:

其他回答

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

不确定这是否有帮助。

检查程序集名称和程序集中的“属性”中的默认名称空间是否匹配。这解决了我的问题,产生同样的错误。

对我来说,似乎Nuget并没有很好地处理我的项目/解决方案。我用Nuget安装了NewtonSoft。项目文件似乎正确地引用了它,当我在解决方案资源管理器/依赖项/Nuget中r -点击dll名称时,然后单击属性,我发现dll存在于属性说它应该在的地方。

我删除了Nuget包,并做R-click项目>添加>引用,并浏览到包目录中的dll,当以前的Nuget进程已经安装它时,然后解决方案运行良好。

注意:这个解决方案相当大杂烩,首先是Xamarin。iOS解决方案和添加。net标准项目(这是我使用Nuget有困难的地方)。解决方案中还有一个“可移植”项目。我从一个已经离开3年的开发者那里继承了所有这些。哈哈。

在我的情况下,bin文件夹是一个名为Unity的非引用dll。MVC3,我试图在visual studio中搜索任何参考,没有成功,所以我的解决方案很简单,从bin文件夹中删除那个dll。

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