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

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

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


当前回答

对我来说,这是一个奇怪的解决方案,但我刚刚从源代码控制中获取了这个解决方案。

正在得到此错误,检查了上面的大部分答案,然后删除解决方案并从源代码控制中重新拉出解决方案。

工作。

只会适用于少数人,但我想我是少数人之一,所以会有更多。不知道第一次发生了什么,但不知怎的,当我把它们拉过去时,一些程序集肯定有一些问题。

基本上就是把它关掉再打开。

其他回答

我在这个问题上也浪费了几个令人沮丧的小时。我们不得不更新我们的. net框架版本,并开始得到多个“无法加载文件或程序集或其依赖项之一”的dll,这些dll多年未更改。奇怪的是,在错误消息中搜索的版本都非常旧。例如,它正在搜索Newtonsoft。Json版本为6.0.0,而我们已经使用8.0.1很多年了。

回到这些古老的版本不是一个选择,无论如何,在我们的网络中有一堆bindingRedirect元素。配置文件,应该重定向到旧dll到新dll的调用。回滚。net版本可以消除这些错误,但我们需要新版本。这是怎么回事?

web中的<runtime>元素。配置文件包含元素:

<assemblyBinding appliesTo="v2.0.50727"
    xmlns="urn:schemas-microsoft-com:asm.v1">

似乎被忽略的dependentAssembly元素包含在其中。

罪魁祸首是appliesTo属性。这意味着bindingRedirect只应用于. net 2.0.50727版本。当我们更新. net Framework版本时,我们所有的bindingRedirect元素都被忽略了。

在我们的案例中,解决方案是完全删除appliesTo属性。

我有这个问题,这个错误其实很愚蠢。我为.dll文件指定了错误的位置,在将位置更改为正确的位置后,加载发生了正确的情况(回答,所以其他人不要犯这个错误)。

TLDR; 我的解决方案是在visual studio中恢复默认设置。


我在visual studio 2019社区版上,我在不同的项目中遇到了同一个dll文件的问题,我没有接触过。

After trying out all the answers in this question (as of 2020-07-22 7:13UTC) I decided to repair visual studio installation (backed up my settings beforehand). After installation opened the solutions that had the problem and the problem was gone. After that imported my settings that and the problem came back!! So without repairing visual studio installation again (which takes a few minutes + one restart) I've simply restored VS default settings and then it works. If I end up having time to investigate, I'll edit the answer and pinpoint the underlaying issue

我的解决方案是:

我有一个三层应用程序,我忘记将DLL复制到IIS的正确路径。只要复制到正确的位置,它就为我工作了。

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