我正在尝试在C#Windows窗体应用程序(Visual Studio 2005)中运行一些单元测试,但出现以下错误:

System.IO.FileLoadException:未能加载文件或程序集“Utility,Version=1.2.0.200,Culture=neutral,PublicKeyToken=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)**位于x.Foo.FooGO()位于Foo.cs:line 123中的x.Foo.Foo2(String groupName_)位于FooTests.cs:line 98中的x.Foo.UnitTests.FooTests.TestFoo()**System.IO.FileLoadException:未能加载文件或程序集“Utility,Version=1.2.0.203,Culture=neutral,PublicKeyToken=764d581291d764f7”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)

我查阅了我的参考资料,我只参考了实用程序版本1.2.0.203(另一个是旧版本)。

关于我如何找出试图引用此DLL文件的旧版本的内容,有什么建议吗?

此外,我想我的硬盘上甚至没有这个旧组件。是否有任何工具可以搜索此旧版本的程序集?


当前回答

在我的案例中,在运行ASP.NET应用程序时发生了此错误。解决方案是:

删除项目文件夹中的obj和bin文件夹

清理不起作用,重建不起作用。所有引用都很好,但它没有编写其中一个库。删除这些目录后,一切都很顺利。

其他回答

我得到了:

无法加载文件或程序集“XXX new”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)

这是因为我将程序集的名称从XXX.dll更改为XXX-new.dll。将名称还原为原始名称修复了错误。

您可能在assemblyBinding中有错误的掘金版本,请尝试:

删除web.config/app.config中的所有程序集绑定内容:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.3.0" newVersion="3.1.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-3.1.3.0" newVersion="3.1.3.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
  </dependentAssembly>
</assemblyBinding>

在包管理器控制台中键入:添加BindingRedirect生成所有必要的绑定重定向运行应用程序,看看它是否正常工作。如果没有,请添加包控制台缺少的任何缺少的绑定重定向。

只需删除项目的bin文件夹中的内容并重新生成解决方案就解决了我的问题。

请在Visual Studio调试器中运行代码。请运行直到得到异常。将出现Visual Studio异常UI。请阅读Visual Studio异常底部的“完整详细信息”/“显示详细信息”。在Fulldetails/Showdetails中,它告诉我我的一个项目(指我的主项目)有一个不同的版本在我的例子中,我的单元测试项目正在调用我的项目。我的单元测试项目和我的项目具有不同版本的Microsoft.IdentityModel.Clients.ActiveDirectory。我在执行单元测试时遇到运行时错误。

我刚刚用主项目的相同版本更新了单元测试项目的版本。这对我有用。

我的问题是将源代码复制到一台新机器上,而不覆盖任何引用的程序集。

我没有采取任何措施来纠正错误,所以匆忙中,我删除了BIN目录。重新构建了我的源代码,从那时起就开始工作了。