Визуализатор пользовательских данных Visual Studio создает исключение BadImageFormatException - PullRequest
0 голосов
/ 04 марта 2019

В нашей базе кода c # (следовательно, управляемого кода) у нас есть класс, который мы широко используем во всем коде.Учитывая его повсеместность, я решил написать собственный визуализатор отладчика, чтобы мы могли легко исследовать такие объекты при отладке.Но я попал в ловушку - когда я пытаюсь запустить визуализатор в IDE, я получаю BadImageFormatException.

, который я отправляю, чтобы помочь другим, кто сталкивается с той же ошибкой.Я знаю, что за проблема и решение, и буду публиковать.

1 Ответ

0 голосов
/ 04 марта 2019

Проблема в том, что сама Visual Studio, IDE, работает только как 32-разрядный процесс.Если во время отладки вам нужно запустить пользовательский визуализатор данных, пользовательский визуализатор и весь код, который загружает этот визуализатор, должны загружаться и выполняться 32-разрядным процессом.Пользовательский визуализатор получает объект для визуализации в процессе сериализации / десериализации.Для десериализации объекта визуализатор должен иметь возможность загружать DLL-файл, в котором определен объект.И здесь мы сталкиваемся с загадкой: если мы создаем наше приложение для цели x64 (а не цели AnyCpu), мы идем в ловушку - не имеет значения, если сам пользовательский визуализатор построен на 32-битовая цель, потому что это код приложения, который должен использоваться для десериализации .

Так что, если ваше приложение построено на 64-битной цели, вы не можете запуститьнастраиваемый визуализатор (большой, большой OUCH Microsoft!).Чтобы обойти эту загадку, вы можете построить для цели AnyCpu, и тогда все будет работать хорошо: приложение загружается и работает как 64-битное (так как предназначено для AnyCpu), но IDE все еще может загружать .dll как 32-бит для целей пользовательского визуализатора данных, работающего в пространстве процессов IDE.

Если я ошибаюсь в этом и есть лучший обходной путь, я бы хотел, чтобы его исправили!Благодарю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...