在调试时无法评估表达式

时间:2014-01-16 16:06:45

标签: c# asp.net vb.net visual-studio-2013

当调试asp.net代码(针对IIS运行,并使用Visual Studio 2013)并在断点中尝试使用快速监视来评估变量时,我经常会“无法评估表达式”。

从asp.net项目文件夹中删除.suo似乎解决了问题(重新加载解决方案后)

这是公认的错误吗?现在在Visual Studio 2013中在多台计算机上获得了很多。

5 个答案:

答案 0 :(得分:84)

我今天面对的是VS2013。

  

转到工具 - >选项 - >调试 - >一般 - >       滚动到“使用托管兼容模式”的底部,然后选择选项。

博客的截图(以下网址): enter image description here 重启你的调试。希望它能帮助别人。

帮助我的是下面的内容!

  

答案 1 :(得分:7)

C#调试引擎在很大程度上依赖于CLR调试器来评估表达式。该消息表明CLR处于无法执行简单评估的状态,其原因可能包括以下内容

  • 本地变量已优化
  • 线程在GC不安全点停止
  • 之前的函数调用导致调试器进入错误状态,因此无法进行进一步的评估

答案 2 :(得分:1)

其中一些选项会随着时间而变化-其他答案中评分最高的解决方案似乎不再存在-搜索选项对话框会有所帮助。

现在,对于一个我发现this的ASPNET Core项目,启用它似乎有所帮助:

enter image description here

  

禁止模块加载时的JIT优化(仅受管理):禁用   加载模块且JIT为时托管代码的JIT优化   在连接调试器时进行编译。禁用优化可能   尽管以牺牲成本为代价,但使调试某些问题更加容易   性能。如果您使用的是Just My Code,则禁止显示JIT   优化可能导致非用户代码显示为用户代码(“我的   代码”)。有关更多信息,请参见JIT优化和调试。

如果它似乎没有帮助,我建议再次将其关闭。

答案 3 :(得分:0)

我已针对特定项目遇到此问题,原因是Costura.Fody(将所有DLL嵌入到执行程序集中)。

在这种情况下,您可以停用Costura.Fody.

  1. 从FodyWever.xml中评论出Costura

    Database
  2. 在* .csproj

    中禁用干净的参考目标(如果包含)
    <Weavers>
      <!--<Costura />-->
    </Weavers>
    

答案 4 :(得分:-2)

转到Tools --> Options --> Environment --> General -->检查&#34;根据客户端效果自动调整视觉体验&#34;选项。