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

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


当前回答

右键单击VS中的引用,将“特定版本”属性设置为True。

其他回答

我在尝试更新网站的一个DLL文件时遇到了类似的问题。

当我简单地通过FTP将此DLL文件复制到bin文件夹时,发生了此错误。

我通过以下方式解决了此问题:

停止网站;复制所需的DLL文件/DLL文件;启动网站

如果尝试使用反射进行后期绑定,如果绑定到的程序集具有强名称或其公钥标记已更改,则会引发完全相同的错误。即使实际上没有使用指定的公钥令牌找到任何程序集,错误也是一样的。

您需要添加正确的公钥令牌(可以使用dll上的sn-T获取它)以解决错误。希望这有帮助。

如果您正在使用Visual Studio,请尝试“清理解决方案”,然后重新生成项目。

在尝试了上面的许多解决方案但没有修复后,最终要确保在Visual Studio中的应用程序中启用了“自动生成绑定重定向”。

有关启用自动绑定重定向的更多信息,请参阅:https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/how-to-enable-and-disable-automatic-binding-redirection

尝试将缺少的内容添加到全局程序集缓存中。