Отладка с помощью Visual Studio 2010 и VB.NET: немедленный сбой из-за уровня защиты
Это происходит довольно часто, чаще в день, при использовании Visual Studio 2010 во время отладки, когда я использовал команды Immediate, например:
? NamedVariable
Я получаю следующую ошибку:
'NamedVariable' не объявляется. Это могут быть недоступны из-за его уровень защиты.
В этом случае также исчезли другие функции отладки, но я могу установить контрольные точки, вступить, перешагнуть и т.д.
Решение - прекратить отладку, очистить и перестроить проект и повторить попытку.
Я разрабатываю приложение VB.NET Windows Forms, но это случилось и с проектами VB.NET WPF. У меня никогда не было такого поведения с VS 2008.
Является ли это известной ошибкой или может быть проблемой моей среды/установки? Вы не знаете, как решить эту небольшую, но раздражающую проблему?
Ответы
Ответ 1
Это часто случается и со мной. И единственное решение, которое я выяснил до сих пор:
Решение - это отладка, очистка и восстановление проекта, а также повторная попытка.
Удаление файла suo не поможет. И это может произойти в любом месте кода и, похоже, не зависит от самого кода.
Я думаю, что это происходит в основном после того, как я модифицировал код во время отладки или после множества небольших изменений и строит перед отладкой.
Возможно, отладочная информация становится "потерянной" или "несинхронизированной" в процессе частичной сборки.
Я думаю, что это ошибка VisualStudio и что она будет исправлена в надежде скоро ServicePack.
Ответ 2
Попробуйте, убедитесь, что файл кода, содержащий эту переменную, отображается, и курсор находится в пределах той же области действия переменной.
Попробуйте удалить файл параметров пользователя решения (suo). Вы потеряете свои настройки, такие как закладки, точки останова и другие параметры пользовательских решений.
Ответ 3
Обратите внимание, что это будет происходить внутри некоторых блоков кода "With variable...".
В этом случае замените "With variable" временной переменной, и проблема может быть очищена.
Ответ 4
Я столкнулся с этим в одном из моих классов, и это казалось только одним методом внутри класса.
Я пробовал...
- Очистка и восстановление
- Удаление файла suo
- Воспроизведение файла класса наступления
- Восстановление Visual Studio (2010 SP1)
Ничего из этого не помогло.
Ни один из двух задействованных проектов не использовал версию профиля клиента 4.0.NET Framework.
Что сработало для меня, что я случайно обнаружил, было, когда я перешагивал другой метод, называемый методом оскорбления. Когда я вступил в этот метод, я мог видеть мои переменные снова через окно часов, немедленное окно и т.д.
Не знаю, почему это произошло, я думаю, что это просто ошибка, но это сработало для меня, поэтому я подумал, что буду передавать ее.
Ответ 5
Я не мог наблюдать ни один из моих элементов управления/переменных.
Впервые создав новую конфигурацию сделал трюк, но "сегодня" у меня была такая же проблема, что заставляло меня сходить с ума часами.
Все это сводится к "Debug - Windows - Modules"
Проверьте, загружен ли файл pdb file/pdb file, моя ссылка на обфускационную папку, и я подозреваю, что являюсь причиной, по которой я не мог смотреть/просматривать реквизит и vars..
Я щелкнул правой кнопкой мыши на проблемной строке и попытался направить ее в папку правой папки /pdb, но потом я получил:
Соответствующий файл символа не найден в этой папке
Я удалил все папки сборки в проводнике, перестроил и указал мой XAP файл "Отладка - Windows - Модули - Загрузка символов" в правый файл pdb...
Привет,
Mike
Ответ 6
Просто подумал, что я добавляю свои 2 цента. Я испытал это с 2012 отладкой лямбда. Возьмите этот простой пример.
Dim A As String = "A"
Dim B As String = "B"
Dim Test = Function(C As String) As String
Return C & A
End Function
Debug.Print(Test("Test "))
Поставив точку останова в оператор Return C & A
, вы можете ожидать, что вы можете исследовать B так, как он есть в области внутри закрытия. Но попробовав это в ближайшем окне, вы получите ошибку 'B' is not declared. It may be inaccessible due to its protection level,
. Причина в том, что он не используется в тестовой функции. Вам нужно использовать переменную где-нибудь внутри тестовой функции, чтобы ее можно было увидеть во время отладки.
Ответ 7
У меня также была та же проблема. Я пытаюсь проверить подпрограмму в непосредственном окне и продолжал получать эту ошибку.
Одно из решений:
Для VS 2008 (может работать с другими версиями)
-
Откройте файл VS exe, щелкнув правой кнопкой мыши и запустив его как Администратор
-
Как только VS открывается, перейдите в файл решения, загрузите его, а затем щелкните правой кнопкой мыши по имени проекта и выберите "свойства"
-
Перейдите на вкладку "Отладка"
-
Снимите флажок "Включить процесс хостинга визуальной студии"
-
проверьте свою подпрограмму в непосредственном окне
второе решение:
-
Очистите проект
-
Закрыть
-
Перезагрузите компьютер
-
Повторно открыть и "Запуск от имени администратора"
-
Перейдите в раздел "Мой проект" в окне "Решения"
-
Нажмите "Отладка"
-
Отметьте параметр "Включить отладку собственного кода"
(если у вас есть другая версия VS, посмотрите здесь Включить отладки)
-
Восстановить подпрограмму в непосредственном окне, а затем закрыть и повторно открыть проект
-
Повторите шаги 5 и 6, но на этот раз отключите "Включить отладку собственного кода"
-
Восстановить решение
И пуф по волшебству как-то теперь начал работать.
Ответ 8
Эта проблема связана с определением объекта в <formname>.aspx.desginer.vb
(где <formname>
- это имя вашей формы).
Чтобы исправить эту попытку...
На вкладке проводника решений, расположенной справа, нажмите вторую кнопку (показать все файлы). Спуститесь вниз и разверните его, чтобы увидеть подфайлы. Должно быть <formname>.aspx.desginer.vb
. Откройте <formname>.aspx.desginer.vb
, и вы увидите определение для всего объекта формы, например Protected WithEvents submitButton As Global.System.Web.UI.WebControls.Button
. Добавьте определение для вашего объекта.