'var_name' не объявлено. Он может быть недоступен из-за его уровня защиты. в режиме отладки

Это поведение находится в решении веб-приложения vb.net с несколькими проектами библиотеки классов, на которые ссылается веб-приложение.

Компиляция кода, но в режиме отладки некоторые функции/подпрограммы в ссылочных библиотеках классов имеют локальные переменные, отображающие

'var_name' не объявляется. Он может быть недоступен из-за его уровень защиты.

в часах и в ближайших окнах.

Функция mouse_over intellisense не работает с этими локальными переменными.

В некоторых суб/функциях значения переменных доступны до тех пор, пока я не перейду в Try..Catch

Доступны все переменные, переданные в Sub/Function. Также доступны переменные, определенные на уровне класса.

Такое поведение является новым в коде, который был в решении в течение многих лет. Объем подпрограмм и функций не изменился (они являются общедоступными).

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

Вещи, которые я уже пробовал:

* Clean/Rebuild Solution
* Turn off Code optimizations (it has always been turned off in Debug mode)
* Enable the "Show all members for non-user objects in variables windows (Visual Studio)" option in the Debugging options.
* Import default settings for VS2012
* Update VS2012 to latest version (Update 4)
* Install VS2013 and open solution (behavior occurs there as well)
* Clear AppData cache
* In Advanced Compiler Settings, set 'Generate debug info' to both Full and pdb-only
* Remove local copy of solution and get the solution again from TFS
* All projects in the solution are set to Debug

У меня несколько решений в TFS, и это единственное решение, которое показывает это поведение.

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

Такое поведение не произошло в VS2010.


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

'var_name' не объявляется. Он может быть недоступен из-за его уровень защиты.

как значение переменной в часах/быстрых часах/немедленных окнах

Utility1.vb

Imports System.Web

Imports System.Text

Imports SPBO

Public Class Utility1

Public oNav_inc As New Navigation_INC
'===========================================================================
'Utility1.vb
'===========================================================================
    Public Sub UTIL_EstablishActivityContext(ByRef Response As HttpResponse, ByRef page As Page, ByRef oGlobal_inc As GlobalVariables_INC)

        Dim oActivity As ENC2.Web.ActivityContext
        Dim oMHardUBO As MHUBO
        Dim oPUBO As PUBO
        Dim asGroup As String = ""
        Dim sGroup As String = ""
        Dim bActive As Boolean
        Dim g_oUserAccountBO As UserAccountBO
        Dim sImplementation As String = ""
        Dim rs As DataSet
        Dim sQuery As String
        Dim rsUser As DataSet
        Dim sUserGroups As Object
        Dim iLoop As Integer
        Dim bInternal As Boolean
        Dim g_bInternalUser As Boolean

        g_bInternalUser = False

        'rest of code

    End Sub

End Class

UPDATE: я пошел вперед и переформатировал/переделал свой ноутбук и установил VS2013. Проблема больше не появляется.

Ответ 1

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

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

Ответ 2

Несколько месяцев назад я имел дело с одной и той же проблемой в VS2013. Это безумная ошибка, которую Microsoft (последний раз видел) неспособна воспроизвести. Для меня он пришел и пошел без видимой причины. Первые несколько раз я избавился от него, выполнив некоторые из тех вещей, которые вы уже пробовали выше. Но потом он вернулся, и я не мог избавиться от него. В конце концов, удалили и удалили все следы всех версий Visual Studio (включая ручную развертку реестра), избавляясь от всего кода, проектов, решений и т.д. И удаляя все версии .NET.

Затем я вернул .NET обратно, переустановил VS2013 и получил последнюю версию от TFS. С тех пор он не вернулся. Надеюсь, это не так. Удачи!

Ответ 3

Попробуйте CleanSolution, он, похоже, исправил это для меня.