【问题标题】:Can't see values while debugging调试时看不到值
【发布时间】:2026-01-27 00:40:01
【问题描述】:

我正在使用 Visual Studio 2015,当我遇到断点时,我无法获得有关变量值的任何信息。

  • 将鼠标悬停在变量上时,什么也没有出现。
  • 在即时窗口或手表中,我得到:

    error CS0648: '' is a type not supported by the language
    

这是突然发生的,因为它过去一直工作到昨天。

我尝试了一些方法,包括重置所有用户设置、删除 *.user 文件、重新启动 Visual Studio,甚至重新启动 Windows。

我还能尝试什么?

更新:我已经写了一个 blog post 关于这个问题以及如何重现它。

【问题讨论】:

  • '' 听起来很奇怪。变量的真正类型是什么?所有类型都受影响吗?
  • 最近这样的问题好像比较多。见*.com/questions/32339956/…
  • 它给了我任何类型,甚至是简单的string
  • 您可能以某种方式弄乱了项目引用并导致 VS 加载的不是您的项目文件,而是其他版本的程序集。
  • @Gigi 您是在发布模式还是调试模式下构建项目?如果您在发布版本中构建,那么我不会对 const 完全被优化掉感到惊讶,因此它的“本地”声明已经消失。

标签: debugging visual-studio-2015


【解决方案1】:

您不会相信这一点,但这似乎与我的const 表达式有关。删除const 并使用变量解决了这个问题。

多么奇怪。无法在简单的控制台应用程序上重现。该问题最初出现在 ASP .NET 5 Web 应用程序上。

更新:在我的blog post 中查看更多详细信息,其中还解释了如何重现该问题。

【讨论】:

  • 我可以验证。这也发生在我身上。在我的 c# mvc 应用程序的 ascx 页面(用户控件)中,我定义了一个 const 并收到此错误。一旦我更新为 var,它就会再次工作。 #VisualStudioBug!!!
  • 我也可以验证。此外,它似乎仅限于声明 const 的方法。在该方法中,Locals 窗口将为空,添加 Watches 将导致 CS0648。退出该方法将立即再次显示 Locals 并且 Watches 也将再次显示值。拥有类级别的 const 不会对调试器产生负面影响。
【解决方案2】:

这是aspnet/Home issue #955 当前正在跟踪的错误。

Console Application repro 供参考:

重现

  1. 打开 VS2015(Windows 10、ASP.NET 5 Beta 7)
  2. 单击文件 > 新建 > 项目 > Web > 控制台应用程序(包)> 确定
  3. 编辑 Program.cs 以反映下面的代码 sn-p。
  4. Console.WriteLine(a);之后添加一个断点
  5. 运行项目
  6. 右击变量ab点击添加观察

代码

public void Main(string[] args)
{
    const int a = 3;
    int b = 4;
    Console.WriteLine(a);
}

预期

监视窗口显示变量 ab 的值

实际

观察窗口列变量ab显示:

错误 CS0648: '' 是该语言不支持的类型

注意事项

  1. a 的值已正确写入控制台
  2. 从 sn-p 中删除 const 将恢复为预期行为

【讨论】:

    【解决方案3】:

    我有一个具有 CONST 的变量,一旦我删除了所有类型,我的所有类型都会显示出来并在其中包含值。

    【讨论】:

      最近更新 更多