我在 x64 上使用 MSTest 时遇到问题:测试项目依赖于几个 C++/CLI 程序集,并且由于某种原因无法加载。在 Visual Studio 中,我得到(精简):
Error loading D:\xxx\Xxx.Test.dll: Unable to load the test container 'D:\xxx\Xxx.Test.dll' or one of its dependencies. Error details: System.BadImageFormatException: Could not load file or assembly 'Common.Geometry.Native, Version=1.1.4574.22395, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
在命令提示符下手动运行 MSTest,我得到:
Unable to load the test container 'D:\xxx\Xxx.Test.dll' or one of its dependencies. Error details: System.IO.FileNotFoundException: Could not load file or assembly 'Common.Geometry.Native, Version=1.1.4574.22395, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
值得一提的细节:
- 测试项目本身是使用“Any Cpu”编译的。
- 我使用 x64 特定的 testrunconfig
- Dependency walker 显示 C++/CLI 程序集 (Common.Geometry.Native) 中没有丢失的本机依赖项
- 更有趣的是,在同一解决方案中还有另一个测试项目使用相同的 C++/CLI 程序集 (Common.Geometry.Native),它运行时没有任何问题。
我还验证了没有 32 位程序集/dll 干扰。
欢迎任何建议!