尝试调试WCF服务代码(MSVS 2013)时,在“添加监视”函数中遇到“表达式求值器内部错误”的问题。

114
几天前我将我的解决方案转移到了MSVS 2013。它运行良好,除了一个问题:当我尝试调试我的WCF服务代码时,它可以工作,但是在我想要查看任何变量的状态时,它却显示“表达式求值器内部错误”。在客户端代码中添加监视功能正常,但在服务代码中破损了。我正在尝试调试运行在本地主机上的自己的 WCF服务。您能否帮助我修复这个问题?
以下是 MSVS 信息: Microsoft Visual Studio Professional 2013 版本 12.0.30110.00 更新 1 Microsoft .NET Framework 版本 4.5.51641 操作系统:Windows 8.1

在MSVS2012中它可以正常工作(Microsoft Visual Studio Professional 2012 版本11.0.61030.00更新4 Microsoft .NET Framework 版本4.5.51641) - Ceridan
我也看到了这个消息,只是从2012年升级到2013年。 - Gary
我必须回滚到2012年,在2012年它可以无错误地运行,而2013年对我仍然存在问题。 - Ceridan
在VS 2013中也遇到了相同的错误。 - zulucoda
4个回答

230
这可能是Visual Studio 2013新版(托管)调试引擎中的一个错误。尝试打开 托管兼容模式 (有效地将其转换为2013年之前的调试引擎),该选项位于 工具 - 选项 - 调试

如果这解决了问题,我建议您尝试使用小项目重现该问题,然后在Connect上报告它,以便修复。
@bjhuffine在下面评论说,还有其他启用兼容模式的方法,而不必全局禁用它(例如每个项目)。更多信息请参见:https://devblogs.microsoft.com/devops/switching-to-managed-compatibility-mode-in-visual-studio-2013/

7
这解决了我在Visual Studio 2015 CTP 6中遇到的同样问题。 - Chris Schiffhauer
1
这些配置解决了问题,但诊断工具停止工作了。 - Xepe
6
这解决了我的Visual Studio 2015 RTM相同的问题(并禁用了新的诊断工具),但我在Visual Studio 2013中从未遇到此问题。我需要在家里的电脑上进行测试并比较。 - ahwm
2
你是个天才,我的朋友!我还发现了这篇文章,它不仅提供了更多的解释,而且展示了其他的方法来完成这个任务,如果你不想使用全局修改这个大锤。http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/switching-to-managed-compatibility-mode-in-visual-studio-2013.aspx - bjhuffine
11
补充一下,如果这些选项被灰掉了,你需要停止调试。 - Radderz
显示剩余7条评论

13

根据“表达式求值器内部错误”问题,“使用托管兼容性模式”会停止“编辑和继续”功能。请尝试在工具-选项-调试下勾选“使用传统的C#和VB表达式求值器”选项。


2

我尝试了Igal的答案,但对我没有用,但我找到了一个适合我的解决方案。我清除了观察窗口,并开始重新添加项目。我注意到,如果我尝试添加不在当前子程序或函数内的项目,则会出现内部错误。

我通过从其它子程序或函数中添加其他项来解决了这个问题,再次没有出现错误。


在我的情况下,即使我在方法范围内添加了监视项,错误仍会发生,但是“使用托管兼容模式”的解决方案对我有帮助。 - Ceridan

0

Michael Freidgeim的回答帮助我调试了我的问题。但是我想添加有关我的问题原因的其他细节。虽然与提问者的问题略有关联,但他的错误非常具有误导性。

我们正在使用Telerik控件RadGrid和GridDateTimeColumn。这些网格的MinDate属性默认为01/01/1980,因此如果将日期绑定到此列并且小于该日期,则会看到此错误。奇怪的是,原始绑定和显示没有问题,只有在导航到另一页时才会引发错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接