Отладка с помощью 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. Добавьте определение для вашего объекта.