编辑并继续:"......时不允许更改"

nig*_*der 105 visual-studio-2008 edit-and-continue visual-studio

即使我创建一个干净的WinForms项目,编辑并继续不起作用,并给我错误:

将调试器附加到已在运行的进程或在构建或运行时优化正在调试的代码时,不允许进行更改.

  1. 在工具→选项→调试中选中编辑并继续选项.
  2. 未启用优化.
  3. 似乎没有任何托管分析器设置.
  4. 我在调试模式下运行
  5. 我在x64 CPU和Windows XP 32位上运行,但是将平台目标设置为x86而不是AnyCpu没有帮助.
  6. 修复Visual Studio安装没有帮助.

我也在MSDN网站上发现了这篇文章:

不支持的方案

在以下调试方案中,"编辑并继续"不可用:

  • 在Windows 98上进行调试.

  • 混合模式(本机/托管)调试.

  • SQL调试.

  • 调试Dr. Watson转储.

  • 在未处理的异常之后编辑代码,此时未选中"在未处理的异常上展开调用堆栈"选项.

  • 调试嵌入式运行时应用程序.

  • 使用"附加到"调试应用程序,而不是使用"调试"菜单中的"启动"运行应用程序.

  • 调试优化代码.

  • 目标是64位应用程序时调试托管代码.如果要使用"编辑并继续",则必须将目标设置为x86.("项目属性","编译"选项卡,"高级编译器"设置.).

  • 在由于构建错误而无法构建新版本之后调试旧版本的代码.

但我可以对此列表中的每个项目回答"否".

它以前工作过,但几天前它停止工作,我不知道可能是什么原因.

bep*_*000 64

适用的解决方案

如果您想要快速修复"编辑并继续" ,这是一个不完整,无序的可能解决方案列表:

  • 确保您处于调试模式
  • 确保您没有启动混合模式过程
  • 尝试将CPU目标设置为x86而不是AnyCPU(在x64计算机上)
  • Project Properties-> Debug中取消选中Debug ModeOptimize Code复选框
  • 取消选中启用优化高级编译器设置
  • (ASP.NET)如果是这种情况,请检查nightcoder的答案
  • (ASP.NET)如果是这种情况,请检查此答案(通过matrixugly)
  • (ASP.NET)确保在Web选项卡上启用了" 编辑并继续"(vs2010)
  • (ASP.NET)转到" 属性">"Web">"服务器",并确保在" 使用Visual Studio开发服务器"下选中" 启用并继续".
  • (ASP.NET WebAPI)在尝试编辑断点之前,请确保已使用断点停止在Controller的方法中.
  • 转到工具>选项>调试>常规,并确保未选中要求源文件与原始版本完全匹配.
  • 你在使用微软假货吗?它禁止编辑和继续.
  • 通过在任务管理器中选择" 结束进程树"来杀死所有*.vshost.exe实例.VS将重新生成正确的实例.
  • 使用Debug-> Delete All Breakpoints删除所有断点
  • " 工具">"选项">"调试"菜单以及" 项目设置"中都存在" 启用并继续".一定要检查两个地方.扩展的Intellitrace设置不支持编辑和继续.
  • 务必调试信息项目属性>构建>高级>输出>调试信息设置为
  • 某些插件可能会干扰.通过禁用/卸载进行检查,然后再次尝试其他解决方案.
  • 如果您没有给予足够的重视,那么您在尝试修复此问题时遇到的错误可能会更改为更容易诊断的其他错误.例如,包含lambda表达式的方法不支持编辑和继续.
  • 确保未将System变量COR_ENABLE_PROFILING设置为1.有些分析器在安装时设置了这个,并在卸载后保留它.打开命令提示符并键入set以快速检查系统是否受到影响,如果是,请删除该变量或将其设置为0:

    • 在Windows 8及更高版本中,搜索" 系统"("控制面板").
    • 单击" 高级系统设置"链接.
    • 单击" 环境变量".
    • 去掉 COR_ENABLE_PROFILING
  • 请注意不受支持的方案(如问题中所述)以及不受支持的编辑.

*'你',我的意思是页面的访问者正在敲击键盘上找到解决方案.

如果您有其他提示,请随时编辑此答案!

  • 这是COR_ENABLE_PROFILING ......不知道为什么设置它.谢谢.现在停止在键盘上敲击我的头. (3认同)
  • 我尝试了所有但工作。然后我意识到我必须处于中断模式(调试-> 中断所有)或处于断点。请将此添加到您的列表中。https://msdn.microsoft.com/en-us/library/7932e88z.aspx (2认同)
  • 这里没有提到为我解决这个问题的一件事:我必须*禁用(取消选中)“工具”>“选项”>“调试”下的“启用编辑并继续”选项。这与您直观的想法完全相反,但这就是为我解决的问题(即阻止了那个烦人的消息并让我编辑我的代码)。 (2认同)

vig*_*ity 23

如果您正在调试ASP.NET应用程序,请转到属性> Web>服务器,并确保在使用Visual Studio开发服务器下选中"启用并继续".

  • 还需要在调试时按Pause,然后才能编辑代码 (3认同)

Pej*_*van 19

我终于解决了这个问题:卸载加利奥

Gallio似乎有相当多的粗糙边缘,最好不要使用MbUnit 3.0但是使用MbUnit 2.0框架但是使用gallio runner,你运行时没有从安装程序安装(它还安装了visual studio插件).

顺便说一句,即使在"禁用"Gallio插件之后,我也遇到了这个问题.只有卸载解决了问题.

PS.由nightcoder编辑:
在我的情况下,禁用TypeMock Isolator(模拟框架)终于有所帮助!编辑并继续现在工作!

以下是TypeMock支持的答案:

在进一步查看编辑并继续发布问题并与Microsoft进行对话后,我们得出结论无法解决隔离器问题.Isolator实现了CLR分析器,根据我们的研究,一旦启用并附加了CLR分析器,就会自动禁用编辑和继续.我很遗憾地说这不再被认为是一个错误,而是隔离器的限制.


小智 9

我有同样的问题.我甚至重新安装了VS 2008,但问题并没有消失.但是,当我删除所有断点时,它开始工作.

Debug->Delete All Breakpoints
Run Code Online (Sandbox Code Playgroud)

我认为这是因为我删除了一个在其代码中有断点的aspx页面,然后我创建了另一个具有相同名称的页面.这可能让VS 2008感到困惑.


Jar*_*Par 5

需要检查的几件事

  • 确保您的编译设置为调试与发布
  • 确保您没有启动混合模式进程
  • 如果在 64 位机器上确保将 CPU 目标设置为 x86 而不是 AnyCPU

编辑

我认为这无关紧要,但请确保为目标平台启用了托管过程。可能帮不上忙。

如果它为新项目重现,那么它可能会更加微妙。我会尝试以下。

  • 备份 HKCU:\Software\Wow6432Node\VisualStudio\9.0(也许只是重命名)
  • 删除相同的密钥
  • 再次尝试重现

  • 什么是混合模式过程?我什至尝试过新的 winforms 项目。 (2认同)

小智 5

以上解决方案都不适合我(在 64x 机器上运行)。

最后,我单击'advanced compiler settings'取消选中 'enable optimizations',现在我可以在调试时逐步执行代码和编辑。

  • 这似乎只是 Visual Basic:http://msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx (2认同)
  • 这些设置在哪里? (2认同)

Pro*_*one 5

“编辑并继续”(Edit and Continue)启用后,将仅允许您在处于中断模式时编辑代码:例如,通过异常暂停执行或击中断点,从而使执行暂停。

这意味着您在执行不暂停时就无法编辑代码!在调试(ASP.NET)Web项目时,这是非常不直观的,因为您通常希望在请求之间进行更改。目前,您的(可能)调试代码尚未运行,但也未暂停!
要解决此问题,可以单击“全部中断”(或按Ctrl+ Alt+ Break)。或者,在某处(例如在您的Page_Load事件中)设置断点,然后重新加载页面,以便在遇到断点时暂停执行,现在您可以编辑代码。甚至.cs文件中的代码。