Как решить проблему VS2010 Windows Form Designer (не удалось загрузить базовый класс) - PullRequest
24 голосов
/ 14 октября 2011

Недавно я получал сообщение об ошибке в конструкторе Windows Forms VS2010SP1 при использовании унаследованных пользовательских контролов.

Ошибка:

Невозможно отобразить конструктор для этого файла, посколькуни один из классов внутри него не может быть разработан.Разработчик проверил следующие классы в файле: DebugPanel --- Базовый класс 'UI.Panels.PanelBase' не может быть загружен.Убедитесь, что на сборку ссылались и что все проекты были построены.

PanelBase - это UserControl, который определен в той же библиотеке классов, что и DebugPanel, который также реализует интерфейс IPanel (который, в свою очередь, определен вта же библиотека классов).IPanel реализует интерфейс IBaseItem, который определен в другой библиотеке классов.

Таким образом, у нас есть

DebugPanel            (Library UI.Shared2)
- PanelBase           (Library UI.Shared2)
    - UserControl     (System.Windows.Forms - .NET4)
    - IPanel          (Library UI.Shared2)
        - IBaseItem   (Library Net.Common) 

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

Обычно я могу временно разрешить проблемуочистив библиотеку UI.Shared2, закрыв VS, а затем снова открыв ее, пересобрав решение и открыв конструктор.Затем это будет работать некоторое время, а затем снова начнет давать сбой.

У кого-нибудь есть предложения, которые могут навсегда решить эту проблему, не прибегая к перезапуску VS?

Редактировать: Я работаю над полной версией .NET 4 со всеми библиотеками.

Ответы [ 7 ]

17 голосов
/ 24 февраля 2014

У меня была такая же проблема. У меня был объект Form / базовый объект, от которого я унаследовал, и внезапно я вижу это сообщение для всех форм, которые были унаследованы от Base.

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

Кстати, это было на VS 2013.

7 голосов
/ 01 марта 2013

В последнее время я часто сталкиваюсь с этой проблемой, нашел простой и быстрый способ ее решения и решил поделиться ею (работает для меня на VS 2012).

Когда у вас есть такая форма:

public partial class MyForm : MyBaseForm

и дизайнеру не удается спроектировать MyBaseForm, говоря the base class 'System.object' cannot be designed, все, что мне нужно сделать, это удалить : MyBaseForm и вернуться (Backspace> Ctrl + Z). Тогда дизайнер придет в себя.

public partial class MyForm : MyBaseForm // The designer has trouble with this
public partial class MyForm              // Force an error
public partial class MyForm : MyBaseForm // Revert back, the designer should now work again

Теперь осталось только дождаться, пока Microsoft исправит эту досадную ошибку.

7 голосов
/ 21 октября 2011

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

3 голосов
/ 20 февраля 2014
  1. Чистый проект (не уверен, если это необходимо)
  2. Установить сборку для выпуска
  3. Перестроить проект

Конструктор форм не будет перестраивать формы, которые вы редактировали вручную, если вы, очевидно, строите проект в режиме отладки.

1 голос
/ 17 августа 2012

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

Я часто запускаю несколько экземпляров Visual Studio.Если я оставляю экземпляр VS, на котором запущена программа, в режиме отладки, и эта программа совместно использует библиотеку с экземпляром Visual Studio, в котором я пытаюсь создать проект, то я сталкиваюсь с этой проблемой.Он также может быть таким же простым, как и библиотека DLL, на которую ссылается конструктор.

Как только вы закроете программу, которая блокирует эти библиотечные файлы, тогда проект возвращается к нормальной работе.

0 голосов
/ 09 ноября 2017

У меня была эта ошибка с VS2015, пробовал очистить / пересобрать шаги, встроенная версия не работала.

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

Я сдался и просто поместил базовый элемент управления в проект "VsBug", кажется, счастлив...

0 голосов
/ 23 февраля 2016

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

...