1

我们使用 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。

4

1 回答 1

0

因此,据我所知,没有从命令行使用 MSTest 的解决方案。MSTest 将所有 /TestContainers 以及所有依赖项复制到 /Out 目录中。在我的例子中,它首先找到了对旧版本 Newtonsoft.JSON.dll 的引用,并将其复制过来。然后,当它解决其他 Newtonsoft.JSON.dll 的依赖关系时,它没有将其复制过来。

我的解决方案是更改实用程序以运行每个程序集的 MSTEST 实例,而不是一次为所有程序集运行它。

于 2013-05-24T20:10:05.263 回答