Я пытаюсь отлаживать DLL, написанную на VB.Net. Когда запускается внешняя программа, она загружает DLL, и все работает нормально... но я не вижу переменные класса на панели Locals. Они отображаются пустыми, как показано ниже.
Кроме того, некоторые строки кода генерируют ошибку «Для текущего местоположения нет доступного исходного кода», но я думаю, что понимаю, почему. Всякий раз, когда он пытается войти в члены класса какой-либо из библиотек Microsoft DLL, у него, конечно же, нет информации для них. Но любые строки, которые имеют дело только с написанным мной кодом, работают нормально.
Это надстройка COM DLL для Microsoft Access 2007, но я предполагаю, что проблема примерно одинакова, независимо от типа DLL. Для начала использовался мастер надстроек Shared COM, а затем настройка продолжалась оттуда с удовлетворительными результатами... за исключением невидимых переменных в окне Locals.
Я новичок в написании и отладке такой DLL; до сих пор я делал только файлы EXE. Я изучил MSDN, Google и Stack Overflow, и вот подробности, о которых спрашивают в других темах...
\bin\
с DLL.Я копался в реестре и нашел все ссылки на проект, DLL и его пользовательский элемент управления UserControl (требуется, поскольку проект создает CustomTaskPane, а все пути указывают на папку \bin\
.
Что я делаю неправильно?
Что я делаю правильно?
Что я могу улучшить?
Хорошо, отвечая на часть моего собственного вопроса. Я думаю, что исправил сообщение об ошибке «Для текущего местоположения нет доступного исходного кода». В свойствах проекта было включено "Включить отладку неуправляемого кода".
Если эта опция отключена, теперь я могу выполнять код без ошибок, даже если он сталкивается с объектами, для которых у меня нет кода. Отладчик тоже ведет себя немного по-другому, но я еще не зафиксировал его. Я читал о различиях между управляемым и неуправляемым кодом и их отладке в смешанных комбинациях, но хотя я понимаю в принципе, я еще не понимаю на практике.
Однако мои локальные переменные все еще пусты.
Да, это ответ на сообщение об ошибке, которое, как я теперь знаю, является только одной проблемой. Но я не знал, что, когда я делал свой ОП, я просто описал группу симптомов, которые, казалось, были связаны с возможной единственной первопричиной. Если никто не может дать полный ответ на весь пост, мой собственный ответ может считаться единственным, даже если он неполный.
Хорошо, поработав над этим в течение нескольких дней между другими проектами, у меня есть ответ... своего рода. Я думаю, что решение и/или проекты испортились. Я передам все, что смогу, в надежде, что это поможет другим.
Вчера у меня был марафонский сеанс «щелкнуть все», в настройках проекта и «Параметры»> «Отладка», но ничего не помогло. В какой-то момент я перестал возиться с настройками отладки и продолжал работать над кодом, пока не устал и не пошел домой.
Сегодня утром на свежую голову я попробовал еще раз и обнаружил теперь все переменные частного класса были видны. И я не знаю, почему. Кроме того, появилась новая проблема: постоянно появлялась подсказка отладчика Just-In-Time, даже если она не была включена в настройках:
Кроме того, кнопки панели инструментов воспроизведения / остановки / шага становились отключенными, хотя они не должны были быть отключены, но выбор меню для тех же элементов функционировал нормально.
Я еще раз перепроверил все настройки. Я играл со всем и НЕ мог заставить локальные переменные класса снова стать невидимыми и не мог заставить диалог JIT исчезнуть.
Так что я...
После приглашения JIT я нажал «Продолжить» (F5) и закрыл MSAccess. После остановки выполнения некоторые панели IDE (такие как Explorer, Locals и т. д.) исчезли, а некоторые переместились в случайные места на экране. Именно тогда я решил, что что-то может быть повреждено, и начал планировать удаление/переустановку всей Visual Studio 2008 с нуля и, возможно, даже нового решения с нуля.
Поэтому перед переустановкой я попытался создать новое решение с нуля и нашел все заработало отлично, даже со всеми настройками как в исходном решении.
Итак, в исходном решении я...
Итак... Я предполагаю, что что-то было не так в Решении, в одном из Проектов, в настройках IDE или... в чем-то еще. Я надеюсь, что это поможет кому-то другому.
Так что на самом деле это не ответ. Избегайте задавать несколько вопросов, шансы, что кто-то знает ответы на все из них, малы.