Ошибка загрузки сборки с помощью CNTK EvalWrapper

У меня есть сборка .NET с некоторыми тестами, которые ссылаются на CNTK EvalWrapper.dll. Сборка CNTK ориентирована на x64, тестовая сборка .NET имеет цель сборки AnyCPU. Я убедился, что все необходимые библиотеки DLL доступны в выходном каталоге сборки, см. этот вопрос SO здесь . Я выбрал x64 в настройках теста VS/архитектуре процессора.

Мои тесты некоторое время работали нормально, но теперь начали давать сбой с ошибкой загрузки сборки, 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

Я ничего не изменил в настройках моего проекта. Что могло незаметно измениться, из-за чего теперь все мои тесты проваливаются?


person Anton Schwaighofer    schedule 11.05.2016    source источник


Ответы (1)


Я предполагаю, что виновником был 32-битный механизм выполнения тестов, который все еще работал в фоновом режиме, хотя я убедился, что «Настройки теста / Оставить механизм выполнения тестов» не отмечены галочкой. Вчера у меня был момент, когда я заметил, что VS «забыл» мой выбор архитектуры процессора и был сброшен на 32-битную. Я изменил его обратно на 64-битный - оглядываясь назад, я думаю, что проблема началась.

VS автоматически меняет архитектуру процессора для тестов — это то, что я замечал ранее и в других проектах.

Закрытие и повторное открытие VS сделали свое дело, теперь все тесты снова проходят. В качестве альтернативы я мог бы, вероятно, найти все запущенные процессы механизма выполнения тестов и убить их.

person Anton Schwaighofer    schedule 11.05.2016