我正在尝试在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文件的旧版本的内容,有什么建议吗?

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


当前回答

我在运行单元测试用例时遇到了同样的问题。

错误清楚地说明了问题:当我们尝试加载程序集时,.NET程序集加载器会根据其清单数据(引用的程序集名称、公钥令牌、版本)加载其引用的程序。

要检查清单数据,请执行以下操作:

打开Visual Studio命令提示符,键入“ildasm”并将所需的程序集拖到ildasm窗口并打开MANIFEST视图。有时MANIFEST包含一个具有两个版本的程序集,即旧版本和新版本(如Utility,版本=1.2.0.200和Utility,版本=1.2.0203)。实际上,引用的程序集是Utility,版本为1.2.0.203(新版本),但由于清单甚至包含Utility,版本=1.2.0.200(旧版本),.NET程序集加载器尝试查找此版本的DLL文件,找不到,因此引发异常。

要解决这个问题,只需将每个依赖于项目的程序集分别拖到ILDASM窗口中,并检查哪个依赖程序集保存旧程序集版本的清单数据。只需重新生成此依赖程序集并将其引用回项目。

其他回答

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

我今天遇到了同样的问题,在我对实体框架进行了更改后,我无法执行添加迁移。

我的解决方案中有两个项目,我们称它们为“客户端”和“数据”,这是一个包含我的EF模型和上下文的类库项目。客户参考了数据项目。

我已经签署了两个项目,然后对EF模型进行了修改。删除签名后,我可以添加迁移,然后可以重新签署项目。

我希望这对某人有用,避免他们长期受挫。。

发生在我身上的System.ValueTuple

意外错误无法加载文件或程序集“System.ValueTuple,版本=4.0.1.0,文化=中性,PublicKeyToken=cc7b13ffcd2ddd51'或它的一个依赖项。系统找不到指定的文件。

通过在发生错误的计算机上安装.NET Framework 4.7.2 Runtime解决了此问题。简单且无需添加bindingRedirect、修改GAC或降级NuGet包等。

https://dotnet.microsoft.com/download/dotnet-framework/net472

我在运行单元测试用例时遇到了同样的问题。

错误清楚地说明了问题:当我们尝试加载程序集时,.NET程序集加载器会根据其清单数据(引用的程序集名称、公钥令牌、版本)加载其引用的程序。

要检查清单数据,请执行以下操作:

打开Visual Studio命令提示符,键入“ildasm”并将所需的程序集拖到ildasm窗口并打开MANIFEST视图。有时MANIFEST包含一个具有两个版本的程序集,即旧版本和新版本(如Utility,版本=1.2.0.200和Utility,版本=1.2.0203)。实际上,引用的程序集是Utility,版本为1.2.0.203(新版本),但由于清单甚至包含Utility,版本=1.2.0.200(旧版本),.NET程序集加载器尝试查找此版本的DLL文件,找不到,因此引发异常。

要解决这个问题,只需将每个依赖于项目的程序集分别拖到ILDASM窗口中,并检查哪个依赖程序集保存旧程序集版本的清单数据。只需重新生成此依赖程序集并将其引用回项目。

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

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

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