Visual studio 2010 在x64 C和x2B上进行MST测试+/CLI

Visual studio 2010 在x64 C和x2B上进行MST测试+/CLI,visual-studio-2010,visual-c++,c++-cli,mstest,64-bit,Visual Studio 2010,Visual C++,C++ Cli,Mstest,64 Bit,我在x64上使用MSTest时遇到了一个问题:测试项目依赖于两个C++/CLI程序集,由于某种原因无法加载。在VisualStudio中,我得到(精简): 加载D:\xxx\xxx.Test.dll时出错:无法加载测试容器“D:\xxx\xxx.Test.dll”或其依赖项之一。错误详细信息:System.BadImageFormatException:无法加载文件或程序集“Common.Geometry.Native,Version=1.1.4574.22395,Culture=neutral

我在x64上使用MSTest时遇到了一个问题:测试项目依赖于两个C++/CLI程序集,由于某种原因无法加载。在VisualStudio中,我得到(精简):

加载D:\xxx\xxx.Test.dll时出错:无法加载测试容器“D:\xxx\xxx.Test.dll”或其依赖项之一。错误详细信息:System.BadImageFormatException:无法加载文件或程序集“Common.Geometry.Native,Version=1.1.4574.22395,Culture=neutral,PublicKeyToken=null”或其依赖项之一。试图加载格式不正确的程序。

在命令提示符下手动运行MSTest,我得到:

无法加载测试容器“D:\xxx\xxx.test.dll”或其依赖项之一。错误详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“Common.Geometry.Native,Version=1.1.4574.22395,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。

值得一提的细节:

  • 测试项目本身是使用“任意Cpu”编译的
  • 我使用x64特定的testrunconfig
  • Dependency walker在C++/CLI程序集中没有显示缺失的本机依赖项(Common.Geometry.native)
  • 更有趣的是,在相同的解决方案中还有另一个测试项目,它使用相同的C++/CLI程序集(Common.Geometry.Native),并且运行时没有任何问题
我还验证了没有32位程序集/DLL干扰


欢迎提出任何建议

我最初认为微软直到2012年才为MSTest添加64位的测试运行程序。。。事实证明,VS2010能够做到这一点

然后我要检查的是您的本机dll是否有任何其他本机依赖项

MSTest有一个“mis功能”,在运行测试之前,它会创建一个临时目录,通常类似于
PC-NAME WORKSPACE\u NAME 1782368124\Out
,并将代码复制到该目录中。对于.NET程序集,它可以找出依赖项并能够复制它们,但对于本机代码,它似乎没有这样做


过去,我通过将包含任何其他本机依赖项的目录添加到我的用户帐户的PATH环境变量中解决了这个问题(请记住,如果您这样做是为了重新启动visual studio,它不会注意到)

是的,您可以在VS-2010上运行64位测试,32位和64位QTAgent都随附。