debugging Visual Studio 2019:调试过程中“局部变量”面板出错-“检索局部值时出现内部错误”

fjnneemd  于 2023-05-07  发布在  其他
关注(0)|答案(2)|浏览(508)

原始问题

(For再现指令见更新II)
我最近在一次调试会话中摆弄了Visual Studio 2019。我将类“SqlCommand”的一些属性固定为“Favorites”。从那一刻起,我收到一个错误消息“内部错误检索本地值”在“本地”。
在值列的右边有一个“刷新”按钮,当我点击它时,我得到消息“表达式计算器中的内部错误”
现在我无法取消固定该特定属性,因为类树无法再打开。
这种行为并不局限于特定的解决方案,我创建了一个新的演示解决方案,其中我有完全相同的问题。
你可以在下面的屏幕截图中看到它:

主要目标是以某种方式**清除类的哪个属性固定在“局部变量”窗口中的信息。

我已经尝试了几种方法来消除这个错误。

  • 看起来VS以某种方式存储了关于哪些属性被标记的信息,所以我试图删除AppData中的“ComponentModelCache”。
  • 我重置了设置。
  • 我使用安装程序中的修复工具。
  • 我删除了 *.suo文件,然后删除了整个.vs文件夹。
  • 我在/safemode中启动devenv时看到了同样的问题。
  • devenv /resetuserdata也没有帮助
  • 我检查了活动记录,但没有任何线索。
  • 我将项目的目标框架从4.7.2更改为3.5

我使用Windows Server 2019 Standard,.Net Framework 4.7.2,Visual Studio 2019 16.7.6
我在演示应用程序中使用以下代码:

private static int Main(string[] args)
{
    SqlConnection conn = new SqlConnection();
    SqlCommand cmd = new SqlCommand();

    return 0;
}

更新I

这就是我所说的固定功能。我在SqlConnection对象的WorkstationId属性的示例中展示了它(因为它在SqlCommand上不再起作用)。我相信我在命令文本和参数属性上使用了它。可固定属性是16.4引入的一个相对较新的特性

更新二:复制指令

1.重新安装Visual Studio 2019
1.创建新的控制台项目
1.使用我在上面原题中贴出的代码
1.创建Command对象后设置断点
1.调试项目[F5]
1.打开“本地人”窗口。
1.展开cmd变量并滚动直到找到“Parameters”属性
1.固定参数属性(如更新I中所述)
1.停止调试
1.再次启动调试器
1.打开“本地人”窗口。
1.您将看到错误“检索本地值时出现内部错误”
1.点击“刷新”图标(它是值列右侧的圆形箭头)
1.您将看到错误“表达式计算器中的内部错误”,如原始问题中所述。

UPDATE III(更多实验没有帮助)

  • 我使用了VS安装程序中的“修复安装”。
  • 我卸载并重新安装了VS。
  • 我完全删除了整个%USER%/AppData/.../VisualStudio文件夹
ej83mcc0

ej83mcc01#

文件夹中有一个名为ObjectFavorites.json的文件:

%USER%/Documents/Visual Studio 2019/Visualizers

其内容如下:

{
  "$schema": "https://aka.ms/vs/debugger-managed-favorites-schema",
  "types": {
    "System.Data.SqlClient.SqlCommand": {
      "favorites": [
        "Parameters"
      ]
    }
  }
}

删除行"Parameters"

你甚至不需要停止或重新启动VS,你可以在运行中编辑这个文件。删除该行后再次启动调试器,错误将消失。

wvt8vs2t

wvt8vs2t2#

在我这边,我没有遇到同样的问题。

也许你可以尝试以下建议:

1)右键单击您的项目属性-〉Build-〉Advanced-〉--将Debug Info更改为Full
**2)**勾选【工具】--〉【选项】--〉【调试】--〉【常规】下的【使用托管兼容模式】选项
**3)**输入C:\Users\xxx(current user)\AppData\Local\Microsoft\VisualStudio\16.0_xxx\Settings

打开每个文件,然后搜索:
<PropertyValue name="UseVBCSLegacyExpressionEvaluator">0</PropertyValue>

然后,将0的值改为1。保存更改,重新启动VS再次测试。而且你应该以管理员的身份运行它。

相关问题