gpt4 book ai didi

vb.net - 'var_name' 未声明。由于其保护级别,它可能无法访问。在 Debug模式

转载 作者:行者123 更新时间:2023-12-04 01:08:23 24 4
gpt4 key购买 nike

此行为存在于具有 Web 应用程序引用的多个类库项目的 vb.net Web 应用程序解决方案中。

代码可以编译,但在 Debug模式下,引用的类库中的某些函数/子例程具有显示的局部变量

'var_name' is not declared. It may be inaccessible due to its protection level.



在 watch 和即时窗口中。

mouse_over 智能感知不适用于这些局部变量。

在某些子/函数中,变量的值是可以访问的,直到我进入 Try..Catch

传递给子/函数的所有变量都是可访问的。在类级别定义的变量也可以访问。

这种行为在多年来一直存在于解决方案中的代码中是新的。子例程和函数的范围没有改变(它们是公共(public)的)。

也不一致。在给定的类库项目中,一个类中的公共(public)函数/子例程将具有局部变量,您可以在其中查看它们的值,而其他则显示上面显示的消息。

我已经尝试过的事情:
* 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' is not declared. It may be inaccessible due to its protection level.



作为监视/快速监视/立即窗口中的变量值

实用程序1.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

更新:我继续重新格式化/重新镜像我的笔记本电脑并安装了 VS2013。问题不再出现。

最佳答案

对于用 VB.NET 编写的 WinsForm 应用程序,如果“{Whatever_Form}.vb [Design]”选项卡的支持代码文件 {Whatever_Form}.designer.vb 代码文件被 Visual 破坏,就会发生这种情况工作室设计师逻辑。据称“...未声明。它可能无法访问...”的控制符号在 {Whatever_Form}.designer.vb 代码文件中的 Sub InitializeComponent() 内的错误范围内声明,即“我”。缺少前缀,缺少“Friend WithEvents Foo As Type”语句和/或以上所有内容。修复它的方法是直接编辑 {Whatever_Form}.designer.vb 代码文件,保持正确的 {Whatever_Form}.vb 源不变。编辑与 {Whatever_Form}.designer.vb 代码文件的符号有关的所有不一致声明,该文件使用“在文件中查找”Visual Studio 菜单项列出。

避免导致此类损坏的一件事是不要使用 Visual Studio 属性选项卡重命名控件符号的属性名称“(名称)”或事件处理程序过程名称。仅重命名 {Whatever_Form}.vb 源文件中的符号。

我将 Visual Studio 2017 Pro 用于针对 .NET Framework 4.7.1 的 VB.NET WinsForm 应用程序。

关于vb.net - 'var_name' 未声明。由于其保护级别,它可能无法访问。在 Debug模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21937998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com