Vb.net ';变量名称';未声明。由于其保护级别,可能无法访问;在调试模式下
此行为存在于vb.net web应用程序解决方案中,该解决方案具有web应用程序引用的多个类库项目 代码可以编译,但在调试模式下,引用类库中的某些函数/子例程具有显示的局部变量 未声明“var_name”。它可能由于其自身的原因而无法访问 保护级别 在手表和即时窗口中 将鼠标悬停在intellisense上无法处理这些局部变量 在某些子函数中,变量的值是可访问的,直到我进入一个Vb.net ';变量名称';未声明。由于其保护级别,可能无法访问;在调试模式下,vb.net,visual-studio-2012,visual-studio-2013,visual-studio-debugging,Vb.net,Visual Studio 2012,Visual Studio 2013,Visual Studio Debugging,此行为存在于vb.net web应用程序解决方案中,该解决方案具有web应用程序引用的多个类库项目 代码可以编译,但在调试模式下,引用类库中的某些函数/子例程具有显示的局部变量 未声明“var_name”。它可能由于其自身的原因而无法访问 保护级别 在手表和即时窗口中 将鼠标悬停在intellisense上无法处理这些局部变量 在某些子函数中,变量的值是可访问的,直到我进入一个Try..Catch 传递到子/函数的所有变量都是可访问的。在类级别定义的变量也可以访问 这种行为在解决方案中已经存在多
Try..Catch
传递到子/函数的所有变量都是可访问的。在类级别定义的变量也可以访问
这种行为在解决方案中已经存在多年的代码中是新的。子程序和函数的范围没有改变(它们是公共的)
这也不一致。在给定的类库项目中,一个类中的公共函数/子例程将具有局部变量,您可以在其中查看它们的值,而其他函数/子例程则显示上述消息
我已经尝试过的事情:
* 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中没有发生
下面是发生此行为的方法和局部变量声明的示例。 如果您单步执行声明并在任何局部变量或使用局部变量的任何语句上设置watch,您将看到 未声明“var_name”。它可能由于其自身的原因而无法访问 保护级别 作为监视/快速监视/即时窗口中变量的值 实用程序1.vb
更新:我继续重新格式化了我的笔记本电脑并安装了VS2013。这个问题不再出现。几个月前,我在VS2013中处理了完全相同的问题。这是微软(我最后一次看到)无法复制的一个令人发狂的错误。对我来说,它来了又去,没有明显的理由。最初几次,我通过做一些你已经尝试过的事情来摆脱它。但后来它又回来了,我无法摆脱它。最后的诀窍是卸载和删除所有Visual Studio版本的所有跟踪(包括手动扫描注册表),删除所有代码、项目、解决方案等,并删除所有.NET版本
然后我将.NET放回原处,重新安装VS2013,并从TFS获得最新版本。从那时起,它就再也没有回来。当然希望不会。祝你好运 这并不是一个永久性的解决方案,但我确实在一个为我的一个朋友修改的项目中找到了解决方法。虽然我不能让bug永久消失,但我发现如果受影响的页面没有打开进行编辑,它不会报告这些错误
我要做的是保存它们,在编辑器中关闭它们,然后编译项目。一旦我这样做了,项目将正确编译,并且在编译之后,即使打开页面进行编辑,它也不会再次报告这些错误(虽然最终,某些编辑或其他操作会导致问题再次出现——但每次的解决方案都是一样的。关闭所有内容,编译,然后重新打开需要编辑的内容。)尝试清理解决方案,它似乎为我解决了问题。当涉及到用VB.NET编写的WinsForm应用程序时,如果“{Whatever_Form}.VB[Design]”选项卡的支持代码文件{Whatever_Form}.designer.VB代码文件被Visual Studio designer逻辑损坏,则可能会发生这种情况。假定为“…未声明。它可能无法访问…”在{whater_Form}.designer.vb代码文件中的Sub InitializeComponent()内的错误作用域中声明,缺少“Me.”前缀,“Friend WithEvents Foo As Type”语句缺少和/或以上所有语句。解决此问题的方法是直接编辑{whater_Form}.designer.vb代码文件,保留正确的{Whatever_Form}.vb源代码不动。编辑所有与{Whatever_Form}.designer.vb代码文件符号有关的不一致声明,该文件使用“在文件中查找”Visual Studio菜单项列出 要避免造成这种类型的损坏,需要避免的一件事是不要使用Visual Studio属性选项卡重命名控件符号的属性名称“(Name)”或事件处理程序过程名称。仅从{Whatever_Form}.vb源文件重命名符号
我正在使用Visual Studio 2017 Pro,用于针对.NET Framework 4.7.1的VB.NET WinsForm应用程序。能否显示一个失败的变量/方法调用示例,以及如何声明该变量或方法(以及在何处声明)?@Stevendogart添加了示例这似乎是一个持续存在的问题,请参阅此MSDN线程:我刚刚遇到了相同的问题。但对我来说,它是在为dt循环中的每个r设置
,其中dt
是一个通用数据表时出现的。VS2013表示变量r
未声明。是什么为我修复了它s给r
一个类型,因此每个的我的声明变成了dt中每个r的数据行。这可能不适用于其他场景,但在清除VS和.NET之前需要尝试一下。
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