'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.
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
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas une solution permanente, mais j'ai trouvé une solution de contournement pour ce dans un projet que j'avais modifiant pour un ami à moi. Bien que je ne pouvais pas faire le bug pour aller plus loin sur une base permanente, j'ai trouvé qu'il n'a pas signalé ces erreurs si les pages n'étaient pas réellement ouvert pour modification.
Ce que j'avais à faire était de les sauver, de les fermer en dehors de l'éditeur, puis compiler le projet. Le projet SERAIT de compiler correctement une fois que j'avais fait, et après avoir compilé, il ne serait pas signaler ces erreurs encore une fois, même une fois les pages ont été ouvertes pour l'édition (même si en fin de compte, de modifier ou d'autres serait la cause de ce problème de se reproduire-mais à chaque fois, la solution est la même. Proche de tout, compiler, puis rouvrez ce que je dois modifier.)
OriginalL'auteur
Quelques mois en arrière, j'avais exactement le même problème dans VS2013. C'est un fou bug que Microsoft est (le dernier que j'ai vu) incapables de se reproduire. Pour moi, il est venu et a disparu sans raison apparente. Les premières fois je me suis débarrassé de lui en faire certaines des choses que vous avez déjà essayé ci-dessus. Mais alors, il est revenu et je ne pouvais pas m'en débarrasser. Ce qui finalement fait le truc a été de désinstaller et supprimer toutes les traces de toutes les versions de Visual Studio (y compris un manuel de balayage de la base de registre), se débarrasser de tout le code, des projets, des solutions, etc, et la suppression de toutes les versions de .NET.
Puis je les ai mis .NET retour, re-installé VS2013, et a obtenu les plus récents de la TSF. Depuis, il n'a pas de revenir. Espère bien que cela ne fonctionne pas. Bonne chance!
OriginalL'auteur
Essayer de
CleanSolution
, il est apparu à corriger pour moi.OriginalL'auteur
Quand il s'agit d'un WinsForm application écrite dans VB.NET cela peut se produire si la sauvegarde de fichier de code pour le "{Whatever_Form}.vb [Design]" onglet, {Whatever_Form}.le concepteur.code vb fichier est corrompu par le concepteur Visual Studio logique. Le symbole de contrôle qui est censé être "...n'est pas déclaré. C'est peut-être inaccessible..." est déclaré à la mauvaise portée au sein de Sub InitializeComponent() au sein de l' {Whatever_Form}.le concepteur.vb fichier de code, le "Moi". préfixe est manquant", l'Ami de WithEvents Foo Type" instruction est manquant et/ou de l'ensemble de la ci-dessus. Le moyen pour résoudre ce problème consiste à modifier directement le {Whatever_Form}.le concepteur.code vb fichier laissant le bon {Whatever_Form}.code source vb intacte. Modifier toutes les déclarations incohérentes avoir à faire avec le symbole de la {Whatever_Form}.le concepteur.vb fichier de code qui est indiqué à l'aide de la "Rechercher dans les Fichiers" Visual Studio élément de menu.
Une chose à éviter pour ne pas causer de ce type de corruption est de ne pas renommer le symbole de contrôle de la propriété des noms "(Nom)", ou procédure de gestionnaire de noms à l'aide de Visual Studio onglet Propriétés. Renommer les symboles de l' {Whatever_Form}.vb fichier source.
J'ai l'aide de Visual Studio 2017 Pro, pour un VB.NET WinsForm application de ciblage .NET Framework 4.7.1.
OriginalL'auteur