2014-01-16 32 views
35

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

删除从asp.net项目文件夹似乎名为.suo解决该问题

这是一个公认的bug(重装溶液之后)?现在在多台机器上的Visual Studio 2013中获得了很多。

+0

我已经看到了这一点。就我而言,我怀疑它与调试有多个AppDomain加载的进程有关。你的应用程序池中是否有多个应用程序? – jlew

+0

必须在调试模式下编译?它是单个项目还是包含多重项目? –

+0

@jlew只在应用程序池中有一个应用程序。 tim-schmelter是它编译为调试模式... – Tim

回答

5

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

  • 一个局部变量被优化掉
  • 线程停止在GC不安全的点
  • 以前的函数调用导致调试器进入一个糟糕的状态,因此进一步的评估根本就不可能
+3

这个消息是我在vs2013中只注意到的东西RTM不记得在vs2013RC(和beta),2012或2010中发现它(调试时)。 – Tim

67

今天我跟VS2013面对它。

转到工具 - >选项 - >调试 - >常规 - > 滚动至底部的“使用管理兼容模式”,并选择选项。从博客(以下URL)

截图: enter image description here 重新启动你的调试。希望它能帮助别人。

什么帮助我下面!

+2

非常感谢@Shubh! – Merta

+1

非常感谢.... –

+1

非常感谢。非常好的答案。 :) – Abhid

-1

转到Tools --> Options --> Environment --> General -->检查选项 “基于客户端性能自动调整视觉体验”。

-1

我已经面对这个具体的项目,原因是Costura.Fody(嵌入所有DLL到执行大会)。

在这种情况下,你可以从FodyWever.xml

禁用 Costura.Fody.

  1. 注释掉Costura

    <Weavers> 
        <!--<Costura />--> 
    </Weavers> 
    
  2. 禁用干净的参考目标(如果有)中*。的csproj

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