2

我正在开发使用 VS2005 C++/CLI 库的 .NET 4 应用程序。围绕 C++/CLI 库的测试是基于自定义控制台的测试运行器,有点笨拙。我一直在尝试使用 nunit 编写一些新的测试。

问题是基于控制台的应用程序可以加载所有依赖程序集,但 Nunit 抱怨它找不到程序集(例如 System.Runtime.Serialization.SerializationException : Unable to find assembly 'msvcm80, Version=8.0.50727.6195, Culture=neutral, PublicKeyToken= b03f5f7f11d50a3a')。

我已经确定基于控制台的应用程序正在 C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.6195_none_d09154e044272b9a\mscvm80.dll 中加载程序集,并将此文件手动复制到构建目录和测试运行程序目录。这无济于事。

Depends.exe 告诉我 GPSCV.DLL 和 IESHIMS.DLL 找不到,但这并不能阻止控制台应用程序加载依赖项,因此不确定这是否重要。

有没有人对具有旧 C++/CLI 库依赖项的 Nunit 测试进行故障排除的任何提示?

4

1 回答 1

1

当我将 nunit 可执行文件运行到构建输出路径时,我的新测试在 nunit 中成功运行。

看起来这个问题只是需要在与 nunit 运行器相同的路径中(或至少 nunit 可访问)所需的 C++ DLL 的情况。令人困惑的是,从在另一个位置运行的 nunit 运行测试时引发的模块加载异常命名了 nunit 路径中不需要的程序集 (msvcm80.dll)。无论如何,依赖树对我来说有点不透明,这让我很困惑。

令人讨厌的是,我必须通过 Team City 中的批处理脚本调用 nunit 控制台来运行此程序集的 CI 测试,而不是在 Team City nunit 测试运行程序中(就像我们对所有其他测试所做的那样)。

于 2012-08-03T14:48:58.080 回答