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

VS 2010 - Ошибка при открытии User Control/Form with Designer

С#, VS2010, приложение WinForm:

Иногда у меня возникает проблема с получением сообщения об ошибке при открытии некоторых из моих элементов управления/форм. Все компиляции кода и приложение работают правильно. Открытие контроля в дизайнере дает мне:

Дизайнерский загрузчик не предоставил корневой компонент, но не указал почему.

Из моего опыта я могу сказать, что обычно в моем коде что-то не получается правильно инициализироваться, например. свойство не установлено, которое как-то доступно во время выполнения, но не при открытии с помощью конструктора. Единственная проблема заключается в том, что основную причину трудно найти.

Q: Есть ли шанс каким-то образом использовать отладчик, когда дизайнер открывает мой компонент в Visual Studio 2010? Это очень помогло бы, и проблема решения, скорее всего, была бы вопросом минут.

Примечание. Просто, чтобы это было ясно, я знаю, как использовать отладчик;-), я только понятия не имею, как я мог сказать, что дизайнер VS2010 должен открыть мой контроль в режиме отладки.

По состоянию на 2-й SEP 2010 добавлено:

Спасибо за вашу помощь. В основном это статья библиотеки MSDN, описывающая, как это сделать.

  • Мне удалось настроить его и запустить второй экземпляр (было мало чего понять, как это сделать).
  • В моем случае это терпит неудачу, потому что второй экземпляр VS2010 (отладка времени разработки) не находит символы для моего пользовательского элемента управления. Я добавил символы вручную в разделе "Отладка/символы". нет результат, по-прежнему "Точка останова не будет удалена из-за недостающих символов"

BTW, используя этот подход, полезно исключить некоторые вещи из загрузки символов (через окно модулей), потому что это будет безопасно много времени.

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

4b9b3361

Ответ 1

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

Но не желательно, когда код зависит от того, что доступно во время выполнения, но не для времени разработки. Как соединение dbase или файл, который хранится в папке сборки. Это может генерировать исключения, и Visual Studio не очень надежна против обработки исключений во время разработки. В худшем случае вы можете свернуть VS на рабочий стол без какой-либо диагностики. Но все возможно.

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

if (!DesignMode) {
    // etc..
}

Жесткие случаи могут быть диагностированы с советами по отладке в этой статье библиотеки MSDN.

Ответ 2

Чтобы отладить ваш элемент управления в режиме разработки, вам нужны два экземпляра Visual Studio. В первом случае откройте проект, содержащий этот исходный код управления. В свойствах проекта, отладчике задайте командную строку, которая вызывает другой экземпляр Visual Studio (msdev? Не знаю точно для VS2010 - возьмите его из ярлыка), затем выполните команду "Начать отладку". Другой экземпляр Visual Studio запускается. В этом случае открытый проект клиента, который использует ваш контроль над формой.