在某些时候编辑并继续退出为我工作

时间:2009-06-01 22:07:13

标签: c# visual-studio-2008 debugging

我一直在使用C#(使用VS2008)开发一个应用程序已经有一段时间了,大约一周前,“编辑并继续”已停止为我工作。我可以在调试时编辑代码,但是我对代码所做的任何小改动都会迫使我停止项目并重新启动它。我收到的消息是:

Modifying a 'method' which contains a lambda expression will prevent the debug session from continuing while edit and continue is enabled.

奇怪的是,当发生这种情况时,我甚至都没有使用lambda。上周在调试模式下修改相同的代码块让我继续没有问题。我已经在互联网上进行了各种搜索,以了解我可以采取哪些措施来改变行为。我在网上找到的唯一帮助与调试ASP.NET Web项目直接相关。但是,我的解决方案的这部分是一个Windows窗体项目。

问题是什么?有没有办法来解决这个问题?我非常感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

只是一个猜测,但也许您正在调试的方法包含从lambda中捕获的类型。

以下是here的引用。

  

... EnC [EditAndContinue]可以修改   IL,但不是类型 - 也就是说,它不能   将字段或方法添加到类型中,   删除类型,或创建一个新类型。   捕获本地的Lambda表达式   变量可以导致创建   引擎盖下隐藏的类型。   修改包含lambda的方法   表达可能会改变当地人   被捕获,这将需要   改变隐藏的类型。相同   限制与匿名存在   自C#2.0和VS 2005以来的方法。

答案 1 :(得分:2)

使用Attach to Process开始调试时不支持“编辑并继续”。混合模式,组合托管和本机,调试,SQL调试,Compact Framework(智能设备)项目,调试不支持编辑和继续Windows 98或64位调试。“

http://msdn.microsoft.com/en-us/library/ba77s56w.aspx

编辑 - 该链接显示VB,但我确信在使用c#时,我遇到了混合本机和托管代码以及64位调试的相同问题。

答案 2 :(得分:1)

这是一个很长的镜头,但你可能正在使用 LINQ - 这只是lambda表达式的语法糖。那么也许您在代码中添加了一些LINQ?