我们使用 MSTest 针对我们的解决方案运行自动化测试。解决方案中的一些项目针对 .NET 3.5 并引用 Newtonsoft.JSON.dll 版本 4.0.8。其他项目以 .NET 4.0 为目标,并引用 Newtonsoft.JSON.dll 版本 4.5.7 的签名版本。当 MSTest 针对所有测试运行时,使用 Newtonsoft 更高版本的测试会失败,并显示:
System.IO.FileLoadException:System.IO.FileLoadException:无法加载文件或程序集“Newtonsoft.Json,版本=4.5.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)。
但是,如果我只运行运行更高版本 DLL 的测试,它们就会成功执行。我查看了 Test/OUT 目录并确认对于失败的运行,只有早期版本的 Newtonsoft DLL 存在,而对于成功运行,只有更高版本的 DLL 存在。
那么,我该如何 1)强制 MSTest 每次都复制正确的二进制文件,或者 2)强制 MSTest 并排引入同一二进制文件的不同版本?
TIA。