'var_name est pas déclaré. Il peut être inaccessible en raison de son niveau de protection. " en mode debug

Ce comportement est dans un vb.net solution d'application web avec de multiples projets de bibliothèque de classe référencée par l'application web.

Le code compile, mais en mode debug, certaines fonctions/sous-routines dans référencé dans la catégorie des bibliothèques ont des variables locales pour afficher

'var_name' n'est pas déclaré. Il peut être inaccessible en raison de son
le niveau de protection.

dans la montre et immédiate de windows.

La mouse_over intellisense ne fonctionne pas sur les variables locales.

Dans certains sous/fonctions les valeurs des variables sont accessibles jusqu'à ce que j'entre dans un Try..Catch

Toutes les variables passées dans la Sub/Function sont accessibles. Les Variables définies au niveau de la classe sont accessibles, aussi.

Ce comportement est nouveau dans le code qui a été dans la solution pendant des années. Le champ d'application de la sous-routines et fonctions n'ont pas changé (ils sont Publics).

Il n'est pas cohérent. Dans un projet de bibliothèque de classes, des fonctions publiques/sous-routines dans une classe auront des variables locales où vous pouvez voir leurs valeurs, tandis que d'autres affichent le message indiqué ci-dessus.

Choses que j'ai déjà essayé:

* 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

J'ai plusieurs solutions dans TFS et c'est la seule solution que montre ce comportement.

J'ai eu un collègue obtenir une copie de la même solution dans TFS et le comportement ne se produit PAS dans sa copie locale.

Ce problème ne se produit pas dans VS2010.


Voici un exemple d'une méthode locales et les déclarations de variables où ce comportement se produit.
Si vous montez à travers les déclarations et régler la montre sur l'un quelconque des variables locales ou des déclarations à l'aide de variables locales, vous verrez

'var_name' n'est pas déclaré. Il peut être inaccessible en raison de son
le niveau de protection.

que la valeur de la variable dans la montre/espion/exécution de windows

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

Mise à JOUR: je suis allé de l'avant et reformaté/reimaged mon ordinateur portable et installé VS2013. La question est de ne plus paraître.

Pouvez-vous montrer un exemple de variable/appel de la méthode qui est en échec, et comment cette variable ou une méthode est déclarée (et où)?
Ajout de l'exemple
Cela semble être un problème en cours, voir ce MSDN thread: social.msdn.microsoft.com/Forums/vstudio/en-US/...
Je viens de tomber sur cette même question. Pour moi cependant il s'est présenté lors de la configuration de For Each r In dt boucle où dt était un générique datatable. VS2013 a été de dire que la variable r n'a pas été déclarée. Qu'est-ce résolu pour moi a été de donner r un type donc, mon For Each déclaration est devenue For Each r As DataRow In dt. Cela peut ne pas fonctionner pour les autres scénarios, mais c'est quelque chose à essayer avant de l'anéantissement de VS et .NET.

OriginalL'auteur user3337755 | 2014-02-21