我一直在使用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窗体项目。
问题是什么?有没有办法来解决这个问题?我非常感谢任何帮助。
答案 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?