VS 2010 - Ошибка при открытии пользовательского элемента управления / формы с помощью конструктора - PullRequest
12 голосов
/ 01 сентября 2010

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

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

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

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

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

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

По состоянию на 2 сентября 2010 года добавлено:

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

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

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

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

Ответы [ 2 ]

15 голосов
/ 02 сентября 2010

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

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

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

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

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

13 голосов
/ 01 сентября 2010

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

...