0

我有一个 .NET 程序集,其中包含一些引用 CNTK 的测试EvalWrapper.dll。CNTK 构建针对 x64,.NET 测试程序集具有构建目标 AnyCPU。我已确保构建输出目录中提供了所有必需的 DLL,请在此处查看此 SO 问题。我在 VS 测试设置/处理器架构中选择了 x64。

我的测试运行了一段时间,但现在开始失败,加载BadImageFormatException时出现程序集加载错误EvalWrapper.dll。使用 Fusion Log Viewer 检查加载错误也没有发现任何超出错误格式的信息:

The operation failed.
Bind result: hr = 0x8007000b. An attempt was made to load a program with an incorrect format.
Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 14.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\te.processhost.managed.exe
--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: DisplayName = EvalWrapper, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null

我的项目设置没有任何改变。有什么可以悄无声息地改变,让我的测试现在都失败了?

4

1 回答 1

0

我猜罪魁祸首是一个仍在后台运行的 32 位测试执行引擎——即使我确保没有勾选“测试设置/保持测试执行引擎运行”。昨天我注意到 VS “忘记了”我选择的处理器架构,它被重置为 32 位。我将它改回 64 位 - 事后看来,我想这就是问题的开始。

VS 默默地更改处理器架构以进行测试,这也是我之前在其他项目中注意到的。

关闭并重新打开 VS 就成功了,现在所有测试都通过了。或者,我可能已经寻找所有正在运行的测试执行引擎进程,并杀死它们。

于 2016-05-11T10:01:11.347 回答