6

我在我的解决方案中添加了一个现有项目。当我使用 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 的引用显示了 1.2.13.0 版本,该版本是使用 NuGet 添加的。所以它可能是导致所有这些麻烦的依赖程序集。我尝试将 log4net 更改回版本 1.2.12.0,但仍然收到相同的错误消息。

当我使用 MSTest testrunner 运行所有测试时,会出现这些错误。当我只运行失败的测试时,它们通过了。当我单独运行它们时,它们也通过了。我尝试了绑定重定向,但我为被测试的程序集而不是测试程序集做了它。我不知道如何为测试程序集做到这一点 - 没有配置。当我使用 Resharper 测试运行器运行测试时,它们也通过了(但其他测试失败)。TFS Build 服务器运行 MSTest-runner,因此我需要让它与 MSTest 一起工作。

有谁知道我该如何解决这个问题?

4

1 回答 1

11

罪魁祸首找到了。就像我怀疑的那样,一个依赖程序集引用了 log4net 1.2.12.0。用于查找的工具是 dotPeek。幸运的是,我们确实有依赖程序集的源代码,我们可以将其更改为引用最新的 log4net。这解决了这个问题。

因此,如果有人遇到类似问题,请使用 dotPeek 或类似工具查看依赖程序集以找出它引用的程序集版本。

于 2014-04-02T09:29:54.103 回答