[英]Visual Studio Immediate window “Internal error in the expression evaluator”
[英]"Internal error in the expression evaluator"
我在 visual studio 2015 的表达式求值器中遇到了一个问题,上面写着“表达式求值器内部错误”,经过一些调查我发现这是由使用反射加载的程序集引起的。 该程序集不会抛出任何异常,但在那之后,vs exp 评估器将失败。 这不是我加载的唯一程序集,有一些工作良好的程序集不会影响评估程序。
为了解决这个问题,我必须选中“菜单 > 选项 > 调试 > 使用托管兼容模式”,但这会禁用“编辑并继续”功能,我该怎么办?
原因程序集的属性:
谢谢!
这听起来像是表达式计算器中的错误。 为了更好的解决方法,不要选中“使用托管兼容模式”,而是选中“使用旧版 C# 和 VB 表达式计算器”。 这应该使您能够继续使用“编辑并继续”以及在最近几个版本中添加的其他功能。
关于“表达式求值器的内部错误”,您能否通过“帮助”->“发送反馈”->“报告问题”打开一个问题? 这将帮助我们在未来的版本中解决这个问题。
对我来说,选中“使用托管兼容模式”选项有效。 将鼠标悬停在变量而不是属性和值上时,我也看到了问号
我通过以下方式简单地重置我的 visual studio 设置解决了这个问题:to Tools->Import and Export Settings 并选择重置为默认设置
我在 VS2019 上遇到了同样的问题。 我最终删除了我的 Documents/Visual Studio 2019 文件夹。 希望有一天这可以帮助某人。 花了我一天的时间。
附言。 可能不需要删除所有项目,当然也不需要删除您的项目(如果它们在其中),但就我而言,其中的所有内容都是由 VS 自动生成的。
我当然尝试了这里提到的所有解决方案,甚至重新安装 VS 也没有用。 将类重构为另一个名称是“触发器”,这让我认为必须有一些缓存,尽管清除符号等没有用。
在我的例子中,我试图在 List<> 上评估 lambda 表达式并出现这样的错误(“表达式评估器中的内部错误”)。 我使用的是 VS2015,因此允许使用 lambda 表达式。 原来表达式计算器缺少 Linq 库。 我加了
using System.Linq;
到我现在的班级,瞧。 Lambda 进行了评估。
检查您对[DebuggerBrowsable]
属性的使用; 我在 VisualStudio 2017 15.5 中找到了一个最小案例并将其发布在此处。
在这种特殊情况下,表达式求值器 (EE) 崩溃似乎与应用于覆盖同名字段的属性的[DebuggerBrowsable]
属性有关。 这将占人们在那里遇到的案例的一定比例,但在它得到修复之前,无法知道有多少是由于这个特定问题造成的。
完整和完整的演示示例如图所示(并包含在下面以备不时之需)
图像中代码的机器可读副本:
using System;
using System.Diagnostics;
class Program { static void Main() => new _derived(); }
abstract class _base
{
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public Object trace;
};
class _derived : _base
{
public _derived() => Debugger.Break(); // <-- vs2017 EE crash when stopped here
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
new public Object trace => base.trace;
}
在我的例子中,我在 2 个不同的文件夹中有 2 个相同的 dll 文件(似乎,一个 dll 不正确)。 删除.dll 并重建解决方案解决了我的问题。
在我的例子中,我试图检查的数据非常大,一个字符串意外地包含数百兆字节的数据。 当检查的数据量合理时,问题并不明显。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.