Подтвердить что ты не робот

Как устранить проблему VS2010 в редакторе Windows Form Designer (базовый класс не может быть загружен)

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

Ошибка

Дизайнер не может быть показан для этого файла, потому что ни один из классы внутри него могут быть разработаны. Дизайнер осмотрел следующие классы в файле: 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 со всеми библиотеками.

4b9b3361

Ответ 1

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

Ответ 2

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

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

Это было, кстати, на VS 2013.

Ответ 3

Недавно у меня была эта проблема, и я нашел легкий и быстрый способ обхода и решил поделиться ею (работает для меня на 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 исправит эту неприятную ошибку.

Ответ 4

  • Очистить проект (не уверен, что это необходимо)
  • Установить сборку для выпуска
  • Проект перестройки

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

Ответ 5

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

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

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

Ответ 6

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

Ответ 7

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

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

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