it-swarm.com.de

'var_name' wird nicht deklariert. Es kann aufgrund seines Schutzniveaus unzugänglich sein. “ im Debug-Modus

Dieses Verhalten tritt in einer vb.net-Webanwendungslösung mit mehreren Klassenbibliothekprojekten auf, auf die von der Webanwendung verwiesen wird.

Der Code wird kompiliert, aber im Debug-Modus weisen einige Funktionen/Unterprogramme in den referenzierten Klassenbibliotheken lokale Variablen auf, die angezeigt werden 

'var_name' ist nicht deklariert. Möglicherweise ist es wegen seines Schutzniveaus nicht erreichbar.

in der Uhr und den sofortigen Fenstern.

Der mouse_over intellisense funktioniert nicht mit diesen lokalen Variablen.

In einigen Unterfunktionen sind die Werte der Variablen zugänglich, bis ich in einen Try..Catch

Alle Variablen, die in die Sub/Funktion übergeben werden, sind zugänglich. Auf Klassenebene definierte Variablen sind ebenfalls zugänglich.

Dieses Verhalten ist neu in Code, der seit Jahren in der Lösung enthalten ist. Der Umfang der Unterprogramme und Funktionen hat sich nicht geändert (sie sind öffentlich).

Es ist auch nicht konsistent. In einem bestimmten Klassenbibliotheksprojekt verfügen öffentliche Funktionen/Unterprogramme in einer Klasse über lokale Variablen, in denen deren Werte angezeigt werden können, während andere die oben gezeigte Meldung anzeigen.

Dinge, die ich bereits ausprobiert habe:

* 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

Ich habe mehrere Lösungen in TFS und dies ist die einzige Lösung, die dieses Verhalten zeigt.

Ich habe von einem Kollegen eine Kopie der gleichen Lösung in TFS erhalten, und das Verhalten tritt NICHT in seiner lokalen Kopie auf.

Dieses Verhalten ist in VS2010 nicht aufgetreten.


Hier ist ein Beispiel für eine Deklaration einer Methode und lokaler Variablen, in der dieses Verhalten auftritt. Wenn Sie die Deklarationen schrittweise durchlaufen und die lokalen Variablen oder Anweisungen mit den lokalen Variablen beobachten, werden Sie sehen 

'var_name' ist nicht deklariert. Möglicherweise ist es wegen seines Schutzniveaus nicht erreichbar.

als Wert der Variablen in den Fenstern watch/quick watch/sofort

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: Ich habe meinen Laptop neu formatiert/neu abgebildet und VS2013 installiert. Das Problem erscheint nicht mehr.

12
user3337755

Es ist nicht gerade eine dauerhafte Lösung, aber in einem Projekt, das ich für einen Freund von mir korrigierte, fand ich eine Problemumgehung. Obwohl ich den Fehler nicht dauerhaft beheben konnte, stellte ich fest, dass diese Fehler nicht gemeldet wurden, wenn die betroffenen Seiten nicht zur Bearbeitung geöffnet waren.

Ich musste sie retten, aus dem Editor schließen und dann das Projekt kompilieren. Das Projekt WURDE nach dem Ausführen des Projekts korrekt kompiliert. Nachdem es kompiliert worden war, würde es diese Fehler auch dann nicht erneut melden, wenn die Seiten zum Bearbeiten geöffnet wurden (obwohl das Editieren irgendwann das Problem erneut lösen würde) Aber jedes Mal war die Lösung die gleiche. Schließen Sie alles aus, kompilieren Sie und öffnen Sie dann wieder alles, was ich bearbeiten muss.)

4
Rob Wilkins

Vor ein paar Monaten beschäftigte ich mich mit genau demselben Problem in VS2013. Es ist ein verrückter Fehler, den Microsoft (das letzte Mal gesehen) nicht reproduzieren kann. Für mich kam und ging es ohne ersichtlichen Grund. Die ersten Male bin ich durch einige der Dinge, die Sie oben bereits ausprobiert haben, losgeworden. Aber dann kam es zurück und ich konnte es nicht loswerden. Der Trick bestand schließlich darin, alle Spuren aller Versionen von Visual Studio (einschließlich eines manuellen Durchlaufs der Registrierung) zu deinstallieren und zu entfernen, sämtlichen Code, Projekte, Lösungen usw. zu entfernen und alle Versionen von .NET zu entfernen. 

Dann setzte ich .NET wieder ein, installierte VS2013 neu und erhielt das neueste von TFS. Seitdem ist es nicht wieder gekommen. Klar hoffe es nicht. Viel Glück!

2
Casey Crookston

Versuchen Sie, CleanSolution, es schien mich zu beheben.

1

Wenn es sich um eine in VB.NET geschriebene WinsForm-App handelt, kann dies passieren, wenn die Sicherungscodedatei für die Registerkarte "{Whatever_Form} .vb [Design]", {Whatever_Form} .designer.vb-Codedatei durch das Visual beschädigt ist Studio-Designer-Logik. Das Steuersymbol, das angeblich "... nicht deklariert. Es kann nicht erreichbar sein ..." wird innerhalb des Sub InitializeComponent () - Bereichs in der {Whatever_Form} .designer.vb-Codedatei, dem "Ich", als falsch deklariert. Präfix fehlt, "Friend WithEvents Foo As Type" -Anweisung fehlt und/oder alle oben genannten. Sie können das Problem beheben, indem Sie die {Whatever_Form} .designer.vb-Codedatei direkt bearbeiten und die korrekte {Whatever_Form} .vb-Quelle unberührt lassen. Bearbeiten Sie alle inkonsistenten Deklarationen, die sich auf das Symbol der {Whatever_Form} .designer.vb-Codedatei beziehen, die mit dem Menüelement "In Dateien suchen" aufgelistet wird.

Um zu vermeiden, dass diese Art der Beschädigung nicht verursacht wird, müssen Sie die Eigenschaftsnamen "(Name)" des Steuerelementsymbols oder die Prozeduren der Ereignisbehandlungsroutinen auf der Registerkarte "Eigenschaften" von Visual Studio nicht umbenennen. Umbenennen von Symbolen nur aus der Quelldatei {Whatever_Form} .vb.

Ich verwende Visual Studio 2017 Pro für eine VB.NET WinsForm-App für .NET Framework 4.7.1.

0
BoiseBaked