0

CNTK を参照するいくつかのテストを含む .NET アセンブリがありますEvalWrapper.dll。CNTK ビルドは x64 をターゲットにしており、.NET テスト アセンブリはビルド ターゲット AnyCPU を持っています。必要なすべての DLL がビルド出力ディレクトリで利用できることを確認しました。この SO の質問はこちら を参照してください。VS Test Settings / Processor Architecture で 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 に答える