Не удалось найти тип "xxx.xxx.xxx". Убедитесь, что сборка

Я искал StackOverflow и обнаружил похожие проблемы, когда пытаюсь открыть форму, которая ссылается на UserControl в другом проекте.

Я получаю

Чтобы предотвратить возможную потерю данных перед загрузкой дизайнера, необходимо устранить следующие ошибки:

сообщение, относящееся к следующим двум ошибкам:

Не удалось найти тип MyNamespace.CommonUi.InformationBox. Убедитесь, что имеется ссылка на сборку, содержащую этот тип. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен с использованием настроек для вашей текущей платформы или любого процессора.

И

Переменная «InformationBox1» либо не объявлена, либо никогда не присваивалась.

InformationBox1 - это экземпляр пользовательского элемента управления InformationBox, который находится в форме в дизайнере - он просто обозначается как;

Friend WithEvents InformationBox1 As MyNamespace.CommonUi.InformationBox

MyNamespace.CommonUi проект успешно построен.

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

До сих пор так же, как и у других людей:

Это проект, который был перенесен с .NET2 / x86 в VS2005 на .NET4 / x64 в VS2012.

Теперь, когда решение работает под 64-битной версией, оно не работает, и я получаю эту ошибку дизайнера. Однако, если я переключу его на 32-битный (ну технически AnyCPU), я могу легко открыть конструктор.

Я прочитал другие предложения в аналогичных темах, но они не видят, чтобы предоставить какое-либо решение (я даже дошел до варианта «переместите его влево и вправо, чтобы заставить его перестроить»)


person Andy Macnaughton-Jones    schedule 25.09.2013    source источник
comment
Всякий раз, когда я получаю что-то подобное, я выполняю следующие шаги, если вы этого не сделали, возможно, это поможет: 1-Закройте все формы в IDE, 2-Очистите решение, 3-Восстановите решение.   -  person Steve    schedule 25.09.2013
comment
Нет, пробовал. Несколько раз. Насколько я могу судить, в коде .designer.vb нет ничего плохого, и перестройка ничего не меняет (пробовал сравнить до и после)   -  person Andy Macnaughton-Jones    schedule 26.09.2013
comment
Очистка и восстановление моего проекта сработали для меня!   -  person M. Fawad Surosh    schedule 13.02.2019


Ответы (13)


Я считаю, что проблема в том, что Visual Studio изначально 32-битная, и нельзя редактировать графический интерфейс для некоторых компонентов (например, ListView) в 64-битной версии. . Например. в формах, где у вас есть ListView, вам нужно изменить решение на 32-битное, чтобы отредактировать графический интерфейс.

Короче говоря, когда вы сталкиваетесь с этой проблемой:

  1. Измените решение на 32bit или AnyCPU
  2. Очистите и перестройте решение / проект
  3. Откройте графический интерфейс для редактирования
  4. Сохраните, измените решение обратно на 64-битное
  5. Очистить и восстановить
  6. Запуск в 64-битной версии

К сожалению, Visual Studio пока не поддерживает 64-битную версию, поэтому все элементы управления должны быть разработаны в 32-битном режиме (или режиме AnyCPU). ).

См. Этот вопрос для получения более подробной информации.

VS 2010 ошибка дизайнера "Не удалось найти тип XYZ" в Windows7. Прекрасно работает в XP

person rboy    schedule 24.10.2014
comment
Это было проблемой для меня. Они действительно должны исправить сообщение об ошибке, чтобы убедиться, что платформа x86 или любой процессор для редактирования во время разработки. - person Matt Chambers; 19.01.2015
comment
Это так уродливо. Что делать, если у вас только 64-битная версия (например, пользовательский элемент управления, реализованный на C ++ / CLI)? - person Mike Lischke; 30.09.2015
comment
Леша, прими мой голос, но это плохо / глупо (хотя это сработало) - person Sneaky Polar Bear; 25.08.2017
comment
Это шутка. У нас есть сторонний компонент пользовательского интерфейса, предназначенный только для x64. Значит мы не можем посмотреть на дизайнера ??? - person Shiv; 20.02.2018
comment
Это устранило проблему после долгих попыток. Большое спасибо! - person cs31415; 05.02.2020

У меня была такая проблема. Это произошло только в одном представлении конструктора форм, несмотря на то, что он мог скомпилировать, запустить, показать эту форму во время выполнения и показать другие формы / элементы управления в режиме конструктора.

Эти шаги не помогли:

  • Очистить и восстановить
  • Перезапустить студию
  • Удаление всех каталогов bin и obj
  • Удаление и добавление ссылок
  • Отрицание, гнев, торг, депрессия, принятие

Решение для моего случая:

  1. Переименуйте отсутствующий тип (например, InformationBox => InformationBox2)
  2. Обновить дизайнер (Вау, работает!)
  3. Переименуйте тип в его первоначальное имя
person Anton    schedule 10.01.2014
comment
Увы, уловка с переименованием не сработала. Я предполагаю, что обновить дизайнер означает закрыть и открыть окно дизайнера? - person Harald Coppoolse; 14.10.2014
comment
Сейчас у меня нет доступных UI-проектов, но, насколько я помню, в контекстном меню был пункт «Обновить» и / или нажать [F5]. - person Anton; 14.10.2014
comment
У меня была такая же проблема в форме Windows, содержащей текстовое поле wpf. Удаление и добавление ссылки, а затем восстановление проекта решило мою проблему. - person Shawn Orr; 05.12.2014

Измените Any CPU на X86. Ваш элемент управления - 32-битный, пытающийся работать на 64-битной машине, и не может найти 64-битную версию элемента управления.

person jcwrequests    schedule 25.09.2013
comment
Все мои элементы управления должны быть 64-битными, но я думаю, что в элементе управления должно быть что-то, заставляющее его работать как 32-битное, поэтому я получаю несоответствие во время разработки. Если я настрою свое основное приложение на работу только как 64-битное, но переключу проблемный проект на AnyCPU, он будет работать, и я могу просматривать / редактировать форму в основном приложении, которая ссылается на этот другой проект (теперь anycpu). Единственное, что я могу придумать, это то, что это связано со встроенными ресурсами - на пользовательском элементе управления есть изображение лампочки. В противном случае что-то должно побуждать его не работать как 64-битный. Требуется дальнейшее копание ... - person Andy Macnaughton-Jones; 26.09.2013

Недавно у меня была такая же ошибка, когда VB.Net в Visual Studio 2013 работал с настраиваемым пользовательским элементом управления WinForm, который сам наследовал базовый класс настраиваемого пользовательского элемента управления в том же проекте, и мне потребовалось несколько усилий, чтобы выяснить истинную причину, которая в моем случае ни базовый класс, ни дочерний класс не имели конструктора без параметров (потому что в данном случае это недопустимый сценарий).
Чтобы исправить это, я добавил отсутствующий конструктор, но оставил его пустым (выброс NotImplementedException вызвал еще одну проблему, из-за которой он не отображался). Это некрасиво, но работает.

Чтобы увидеть основную ошибку через ту, которая указана в этом вопросе потоков, мне пришлось сделать следующее:

  1. Очистите весь раствор
  2. Закройте Visual Studio
  3. Повторно откройте Visual Studio
  4. Повторно откройте решение
  5. Создайте решение, щелкнув его правой кнопкой мыши в обозревателе решений (не перестроить, это не сработало)
  6. Просмотрите пользовательский элемент управления в режиме конструктора, и теперь отображается фактическая ошибка.

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

person Taegost    schedule 03.10.2016

Я изменил большое решение с несколькими проектами на платформу x64 от AnyCPU. Пытался открыть конструктор одной из форм решения, которая ссылается на элемент управления в одном из других проектов, и получил то же сообщение об ошибке, что и OP. Открыл проект, содержащий элемент управления, и увидел, что он по-прежнему нацелен на AnyCPU. Пытался час, чтобы сохранить как x64, безуспешно. В конце концов я открыл файл csproj в блокноте, заменил AnyCPU на x64, и все заработало. Надеюсь, это поможет кому-то так же расстроенному, как я.

person OldDog    schedule 10.08.2016

Недавно я столкнулся с той же проблемой с одним из моих пользовательских элементов управления (C #) в VS 2015.

Я решил это, очистив раствор (Сборка -> Чистое решение), а затем перестроив все решение. Все вернулось гладко.

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

person TLT    schedule 27.09.2018
comment
Клянусь, я не сумасшедший, я пробовал это и еще несколько вещей, потом пришел сюда и прочитал это, попробовал еще раз, и теперь все снова работает нормально. - person siggi_pop; 03.03.2019

Хотя есть много ссылок на 32-битные и т. Д., Шаги, которые сработали для меня, были:

  • Преобразуйте все ссылки на пользовательский элемент управления, например «InformationBox1 as InformationBox», в полностью определенную ссылку на класс, например «MyNamespace.CommonUi.InformationBox», во всех файлах designer.vb.

    • Чистое решение

    • Восстановить решение.

В моем случае это был проект миграции с VB6 на VS2008, и обе среды были 32-битными, и на одной машине не было никаких признаков присутствия 64-битных.

person Whirl Mind    schedule 16.11.2015

Вот дополнительная информация: дизайнер-нельзя-показать-с-платформой-x64

И разрешение для запуска в AnyCPU, когда вы пытаетесь получить доступ к конструктору, является временным решением, и для наших целей его будет достаточно.

person Andy Macnaughton-Jones    schedule 26.09.2013
comment
Это сработало для меня: хотя моя программа действительно должна работать в 64-битном режиме, если я использую конструктор, используйте Any CPU и выключите, предпочитайте 32-битный. Однако пришлось закрыть и снова открыть решение. Не уверен, что это больше, чем нужно - person Harald Coppoolse; 14.10.2014

Просто сохраните свой проект, закройте его и снова откройте.

person Shamal Sabah    schedule 09.02.2017

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

person Muhammad Saqib    schedule 03.03.2017

Это происходит, если вы компилируете для x64, потому что конструктор Visual Studio не может загружать сборки x64. Разработчик Visual Studio может загружать только сборки x86, потому что это только 32-разрядный процесс!

  1. Вы можете либо перейти на AnyCPU
  2. сборка для x86, тогда дизайнер Visual Studio сможет загрузить ваши сборки, чтобы показать ваши элементы управления во время разработки
  3. Не используйте сборки x64, создавайте их только в пакетном режиме или в Visual Studio, а затем снова переключайтесь на AnyCPU или x86.
person Martin.Martinsson    schedule 08.01.2017

Вы можете перейти на любой CPU:

Project => properties => Build

Целевая платформа: изменить на Any CPU

Очистите и перестройте, снова откройте файл дизайна.

person AAli    schedule 22.03.2017

У меня такая же проблема, и я решил ее:

  1. Переход к свойствам вашего решения в Visual Studio.
  2. Смена «платформы» на «AnyCPU».
  3. Восстановление вашего решения.
  4. Перезапуск визуальной студии.
person AMMAR ELHAMDO    schedule 23.02.2020