我将现有项目添加到我的解决方案中。当我使用 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 构建服务器运行 MSTest 运行程序,因此我需要让它与 MSTest 一起工作。
有谁知道我该如何解决这个问题?
罪魁祸首被发现了。就像我怀疑的那样,依赖程序集引用了 log4net 1.2.12.0。用于查找的工具是 dotPeek。幸运的是,我们确实有依赖程序集的源代码,我们可以更改它以引用最新的 log4net。这解决了这个问题。
因此,如果有人遇到类似的问题,请使用 dotPeek 或类似的工具来浏览依赖程序集,以找出它引用的程序集版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)