Визуальный дизайнер студии в x64 не работает - PullRequest
25 голосов
/ 21 марта 2011

В 64-разрядной версии Visual Studio 2010 я не могу создавать свои формы.
Я получаю это предупреждение (и ошибку):

Warning 18  
The designer could not be shown for this file because none of the classes within it can be designed.  The designer inspected the following classes in the file: 
MainForm --- The base class 'Blah' could not be loaded.  Ensure the assembly has been referenced and that all projects have been built.

Это происходит только при компиляции для x64 ...в x86 дизайнер работает хорошо.

Просто хочу прояснить, что мне НУЖЕН проект для работы на x64, потому что многие компоненты проекта скомпилированы в x64 и не будут работать, если формы в x86.

Кто-нибудь еще сталкивался с этим и нашел решение?

Ответы [ 4 ]

32 голосов
/ 21 марта 2011

Я могу воспроизвести вашу проблему, создав приложение WPF с пользовательским элементом управления (поместите пользовательский элемент управления в приложение wpf и соберите x64).

Вот мое предположение относительно того, что происходит:
Visual Studio - это 32-разрядное приложение, дизайнер WPF должен загружать ссылочные сборки (такое поведение вы видите все время, когда используете пользовательские элементы управлениягде вы должны перестроить, чтобы получить дизайнер для обновления).Windows не поддерживает "thunk" между 32-битным и 64-битным - вы должны быть либо 32-битным, либо 64-битным приложением, точка, без совместного использования.

Поскольку дизайнер WPF является32-битные сборки должны быть 32-битными.

Вот возможное решение: спроектируйте ваше приложение с опцией «Любой процессор».Это приведет к тому, что ваш код станет JIT 32-разрядным на 32-разрядных платформах и 64-разрядным на 64-разрядных платформах.

  • Конструктор будет работать в «любом процессоре», поскольку сборки подключаются к32-разрядный.
  • Когда вам нужно специально отладить 64-разрядную версию, переключите конфигурацию сборки на 64-разрядную (зная, что вы должны переключиться обратно на "32-разрядную или" любой процессор ", создайте форму)
6 голосов
/ 27 августа 2015

Предлагаемое решение от Microsoft заключается в перемещении базовых классов в отдельную сборку, скомпилированную с использованием AnyCPU или x86 (если ваш фактический проект должен быть x64).

К сожалению, это относится к всем базовым классам: если ваше наследование FormC: FormB: FormA, то оба FormA и FormB должны быть в (внешней) 32-битной сборке, если вы хотите редактировать FormC в конструкторе.

Конечно, это относится и к пользовательским элементам управления! Хотелось бы знать об этом до того, как наша команда решила перейти на 64-битную систему - уведомление об изменении параметров компиляции было бы очень приятно, Microsoft ...

6 голосов
/ 20 июля 2012

Это ошибка как в VS2008, так и в VS2010.

Вот отчет об ошибке:

http://connect.microsoft.com/VisualStudio/feedback/details/646328/the-designer-could-not-be-shown-with-platform-x64

Кажется, пока что нет исправления.

3 голосов
/ 29 ноября 2013

Эта пара ссылок от Microsoft точно объясняет эту проблему: я возобновляю их: это ограничение для VisualStudio, поскольку у него нет версии x64.

http://connect.microsoft.com/VisualStudio/feedback/details/583872/windows-forms-designer-cant-design-form-inherited-from-form-in-x64-assembly

http://support.microsoft.com/kb/967050

...