我在我的解决方案中添加了一个现有项目。当我使用MSTest运行程序运行所有单元测试时,我在几个测试中得到以下错误:
消息:测试方法soandso抛出异常: System.IO.FileLoadException:无法加载文件或程序集' log4net,版本1.2.12.0,Culture = neutral,PublicKeyToken = 669e0ddf0bb1aa2a'或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
我知道其他人也有同样的问题,关于这个话题还有其他问题和答案。但我尝试了很多东西,但没有任何帮助。 我们使用的log4net版本是1.2.13.0。
我使用FUSLOGVW.exe检查了绑定错误。 log4net显示添加的程序集和一些未知程序集。 程序集中log4net的引用显示了随NuGet添加的版本1.2.13.0。所以它可能是一个依赖程序集导致所有这些麻烦。 我尝试将log4net更改回版本1.2.12.0,但我仍然收到相同的错误消息。
当我使用MSTest testrunner运行所有测试时,会出现这些错误。当我只运行失败的测试时,它们会通过。当我单独运行它们时,它们也会通过。 我尝试了绑定重定向,但我是为测试而不是测试程序集的程序集做的。我不知道如何为测试程序集做到这一点 - 没有配置。 当我使用Resharper测试运行器运行测试时,它们也会通过(但其他测试失败)。 TFS Build服务器运行MSTest-runner,因此我需要使用MSTest。
有谁知道如何解决这个问题?
答案 0 :(得分:11)
找到了罪魁祸首。就像我怀疑的那样,依赖程序集引用了log4net 1.2.12.0。用于找出的工具是dotPeek。幸运的是,我们确实拥有依赖程序集的源代码,我们可以将其更改为引用最新的log4net。这解决了这个问题。
因此,如果有人遇到类似问题,请使用dotPeek或类似工具浏览依赖程序集,以找出它引用的程序集版本。