【问题标题】:unable to evaluate expression whilst debugging调试时无法评估表达式
【发布时间】:2014-02-05 15:51:05
【问题描述】:

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

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

这是一个公认的错误吗?现在在不止一台机器上的 Visual Studio 2013 中得到了很多。

【问题讨论】:

  • 我也见过这个。就我而言,我怀疑它与调试加载了多个 AppDomain 的进程有关。您的应用程序池中是否有多个应用程序?
  • 必须在调试模式下编译?是单个项目还是包含多个项目?
  • @jlew 在应用程序池中只有一个应用程序。 tim-schmelter 是的,它编译为调试模式...
  • 出于绝望,我重新启动了我的系统,它神奇地又开始工作了......
  • 删除 suo。文件对我帮助很大

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


【解决方案1】:

我今天用 VS2013 面对它。

转到工具 --> 选项 --> 调试 --> 常规 --> 滚动到“使用托管兼容模式”的底部并选择该选项。

博客截图(网址如下): 重新开始调试。希望对其他人有所帮助。

下面是什么帮助了我!

【讨论】:

  • 非常感谢。很好的答案。 :)
  • 我这样做了,但没什么区别,多年来我一直在调试 C# 和 C++,在过去的几天里,无论我使用 VS2015 选择什么选项,我都无法查看我的 c++ 成员变量。
  • 按照你的步骤,但仍然没有得到结果!!
  • ! 请注意,某些功能不适用于托管兼容模式(例如实时代码修改、性能测量工具等)
  • 对我来说这个选项是灰色的
【解决方案2】:

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

  • 一个局部变量被优化掉了
  • 线程在 GC 不安全点停止
  • 先前的函数调用导致调试器进入错误状态,因此根本无法进行进一步评估

【讨论】:

  • 这条消息是我只在 vs2013 RTM 中注意到的,不记得在 vs2013RC(和测试版)、2012 或 2010 中注意到它(调试时)。
【解决方案3】:

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

现在我找到了一个 ASPNET Core 项目this,启用它似乎有帮助:

抑制模块加载时的 JIT 优化(仅限托管):禁用 加载模块且 JIT 运行时托管代码的 JIT 优化 在附加调试器时编译。禁用优化可能 使调试一些问题变得更容易,尽管代价是 表现。如果您使用 Just My Code,则禁止 JIT 优化可能会导致非用户代码显示为用户代码(“我的 代码”)。更多信息,请参阅 JIT 优化和调试。

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

【讨论】:

  • 哦,谢谢,仍然适用于 vs 2019 来评估 linq 查询
  • 这有助于我在 2019 年的 Visual Studio 中尝试在运行时调试期间仔细查看数据集。在设置之前,一切都是“无法评估表达式”。
【解决方案4】:

我在特定项目中遇到过这个问题,原因是 Costura.Fody(将所有 DLL 嵌入到正在执行的程序集中)。

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

  1. 从 FodyWever.xml 中注释掉 Costura

    <Weavers>
      <!--<Costura />-->
    </Weavers>
    
  2. 在 *.csproj 中禁用干净的引用目标(如果包含)

    <!--<Target Name="CleanReferenceCopyLocalPaths" AfterTargets="AfterBuild">
        <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%
         (DestinationSubDirectory)%(Filename)%(Extension)')" />
        <Exec Command="DeleteEmptyDirectory.bat" />
      </Target>-->
    

【讨论】:

  • 就我而言,这是值得付出努力的解决方案。
【解决方案5】:

转到Tools --&gt; Options --&gt; Environment --&gt; General --&gt;,勾选“根据客户端性能自动调整视觉体验”选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多