Как мне заставить дизайнера winform действительно позволить мне создать свою форму?
У меня есть большое решение, скажем, 60-иш проектов. Одним из проектов является библиотека, содержащая элементы управления.
Один из элементов управления, который он содержит, - это класс textbox, производный от TextBox, например,
using System; using System.Windows.Forms; // MySpecialTextBox.cs in a MyClassLibrary project. The form I am trying // to design is in the main EXE's project, and the main EXE's project has a project // reference to MyClassLibrary which is also a member of the solution. namespace MyNamespace { public class MySpecialTextBox : TextBox { // ... } }
Когда я открываю форму, на которую я поместил экземпляр этого элемента управления в прошлом (когда конструктор каким-то образом работал), я теперь получаю экран сообщения об ошибке "чтобы предотвратить возможную потерю данных перед загрузкой конструктора, необходимо устранить следующие ошибки:"
- Не удалось найти тип "MyNamespace".MySpecialTextBox.' пожалуйста, убедитесь, что на сборку, содержащую этот тип, есть ссылка. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен с использованием настроек для вашей текущей платформы или любого процессора."
Что я уже пробовал:
Когда я открываю форму, на которую я поместил экземпляр этого элемента управления в прошлом (когда конструктор каким-то образом работал), я теперь получаю экран сообщения об ошибке "чтобы предотвратить возможную потерю данных перед загрузкой конструктора, необходимо устранить следующие ошибки:"
- Не удалось найти тип "MyNamespace".MySpecialTextBox.' пожалуйста, убедитесь, что на сборку, содержащую этот тип, есть ссылка. Если этот тип является частью вашего проекта разработки, убедитесь, что проект был успешно построен с использованием настроек для вашей текущей платформы или любого процессора."
Я попробовал следующее:
- Откройте редактор конфигураций и убедитесь, что все флажки в столбцах "сборка" установлены и что нет конфликтующих конфигураций платформ (платформы решений-это только x64/x86, и каждый подпроект имеет одну и ту же конфигурацию)
- Выполните то, что предлагалось во многих статьях Stack Overflow: Build -> Clean Solution, Build -> Rebuild Solution, выйдите из Visual Studio, удалите все папки bin и obj, а затем снова откройте Visual Studio. Ошибка все еще появляется. Все мое решение строится идеально.
- Почти все остальное в Google. Это проявляется в элементах управления, непосредственно производных от стандартных элементов управления .NET Framework, а также UserControl. Это похоже на то, что у дизайнера появилась аллергия на пользовательские элементы управления или что-то в этом роде.
- Я проверил, что нигде в моем решении нет сломанных ссылок, Перейдя и развернув папки ссылок одну за другой и проверив, исправляя любые ссылки желтого треугольника (где Visual Studio жалуется на отсутствующие/сломанные ссылки.
- Это происходит как в Visual Studio 2010 со всеми примененными обновлениями, так и в самой последней версии Visual Studio 2017 со всеми примененными обновлениями. </ul
Кто-нибудь знает, что происходит?
GKP1992
Обычно это происходит, когда я меняю dot net framework, файлы конструктора повреждаются, и я ничего не вижу на конструкторе. Так ли это на самом деле?
Hermann Jung
Открыть второй против, например, подключить отладчик к первой инстанции, возможность исключения "перерыв, когда кинули" во второй инстанции. Теперь попробуйте открыть form-designer в первую очередь. Я надеюсь, что это даст вам ключ - удачи.
Richard MacCutchan
Сообщение ясно говорит вам, что сборка, содержащая этот класс, не может быть найдена. Вы должны определить, почему, посмотрев на ссылки, которые вы включили в свой проект(ы). Может быть, собрание просто нужно перестроить.
Richard Deeming
Очевидным обходным путем было бы переместить библиотеку элементов управления в отдельное решение и заменить ссылку на проект ссылкой на сборку.