编辑并继续: “当... ... 时不允许更改... ...”

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

Changes are not allowed when the debugger has been attached to an already running process or the code being debugged was optimized at build or run time.

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

I also found 这篇文章 on MSDN website:

不受支持的场景

Edit and Continue is not available in the following debugging scenarios:

  • 在 Windows98上调试。

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

  • SQL 调试。

  • 调试华生医生的垃圾堆。

  • 未选择“取消未处理异常的调用堆栈”选项时,在未处理异常后编辑代码。

  • Debugging an embedded runtime application.

  • 使用“附加到”调试应用程序,而不是从“调试”菜单中使用“启动”运行应用程序。

  • 调试优化的代码。

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

  • 在新版本由于生成错误而生成失败后调试旧版本的代码。

但是我可以对清单上的每一项都说“不”。

以前有用,但几天前就停止了,我不知道是什么原因。

129716 次浏览

有几件事要检查一下

  • 确保将编译设置为“调试与发布”
  • 确保您没有启动混合模式过程
  • If on a 64 bit machine Make sure to set the CPU target to x86 rather than AnyCPU

编辑

I don't believe this should matter but make sure that the hosting process is enabled for the target platform. Probably won't help.

如果它是新项目的再利用,那么它可能是更微妙的东西。

  • 备份香港中文大学: Wow6432NodeVisualStudio9.0软件(可以重命名)
  • 删除同一个密钥
  • 再试试复制品

当调试器没有达到断点或者您没有达到“中断全部”(暂停)时会发生这种情况。不会这么简单吧?

我终于解决了这个问题: UNINSTALL Gallio

Gallio 似乎有很多粗糙的边缘,最好不要使用 MbUnit 3.0,而是使用 MbUnit 2.0框架,但使用 Gallio 运行程序,这样就不需要从安装程序(它也安装了一个可视化工作室插件)中安装。

顺便说一下,我有问题,甚至在“禁用”他 Gallio 插件。只有卸载解决了这个问题。

编辑:
在我的案例中,禁用 TypeMock 隔离器(模拟框架)最终 有帮助! 编辑并继续现在工作! ! !

以下是 TypeMock 支持的答案:

在进一步查看编辑之后 and continue issue, and conversing 关于它与微软,我们达成了 无法解决的结论 隔离器实现一个 CLR 剖析器,并根据我们的 research, once a CLR profiler is enabled and attached, edit and “继续”将自动禁用。 很抱歉,这已经不是 被认为是一个错误,而不是一个 隔离器的局限性。

我也有同样的问题。我甚至重新安装了 VS2008,但问题并没有消失。然而,当我删除所有的断点,然后它开始工作。

Debug->Delete All Breakpoints

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

这个错误说明了一个可能的原因: “正在调试的代码是在构建或运行时优化的”。转到“项目属性”-> “调试”并取消选中“调试模式的优化代码”框。

对我来说,由于一个我不明白的原因,“高级编译器设置”中的“生成调试信息”设置被设置为“ pdb-only”而不是“ Full”。

By default, this parameter is always set to "Full" but a mysterious poltergeist has changed this parameter on last night. :)

P.S. I'm in Visual Basic .Net with Visual Studio 2010

如果创建新项目,则在调试时进行编辑不起作用。如果我创建了一个新的网站,编辑,同时调试工作的预期。

在我的例子中,只需重新设置为默认调试器设置并设置 IntelliTrace-> 智能跟踪事件就可以了

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

最后,我点击了 'advanced compiler settings'不受约束'enable optimizations’,现在我可以在调试时单步执行代码和编辑。

如果您关心的是 ASP.NET 应用程序,请确保在 Web 选项卡上启用了编辑和继续功能(vs2010)。在早期版本中,还有一个用于 ASP.NET 调试的单独设置。

Regards,

亚当。

我发现即使在项目属性下的 build & Debug 选项卡被设置为 Debug 并且所有其他设置都是正确的,我仍然可以得到消息,但是在深入挖掘之后 under the Build menu select Configurations Manager... and make sure Debug is selected in two places there as well. go figure...how many different places do they need to set debug?????? even though you set Project - Configuration to Debug then under Build - Manager it is not changed so you have change the same setting there as well Project Configuration - seems like a microsoft issue again.......

这个问题是由于智能竞赛设置

如果启用了 Intellitrace,请确保只选中 Intellitrace 事件

否则,这将不允许编辑和继续. 。

如果单击 Intellitrace 选项,您将看到警告。

如果您正在调试 ASP.NET 应用程序,请转到 properties > web > Servers,并确保在 UseVisualStudioDevelopmentServer 下选中“启用并继续”。

一些东西似乎有助于使用 VS2010:

  • 转到工具,选项,调试,一般,并确保“要求源文件完全匹配原始版本”是未选中。
  • multiple .vshost.exe instances can be left over from e.g. detaching the VS debugger from a stopped process. This will interfere with breakpoints and compiles as well. Use Task Manager, Processes tab to kill all instances of .vshost.exe by right-clicking each instance and selecting End Process Tree. VS will create a new instance.

我从我的项目中删除了一个数据集,因为我没有使用它。之后,我可以修改程序时调试。

下面的拍摄帮助我使用 VS2010:

转到工具,选项,调试,一般,并确保“要求源文件完全匹配原始版本”是未选中。

I had this problem in Microsoft Visual Studio 2008 and the solution is easy. when you run your project please set in "Debug" mode not "Release". The another people solution can be useful.

I did all the changes mentioned in every other answer and none worked. What did I learn? 启用并继续 exists in both the Tools > Options > Debugging menu and also in the Project settings. After I checked both, Enable and Continue worked for me.

我今天碰到了这个问题——事实证明,将 Debug Info 设置为 pdb-only (或者不设置,我猜想)会阻止“编辑并继续”工作。

Make sure your Debug Info is set to "full" first!

项目属性 > 构建 > 高级 > 输出 > 调试信息

其他适用解决方案:

下面是一个不完整的,无序列表的可能的解决方案尝试,如果你 * 试图修复编辑 & 继续快速。

  • Make sure you are in Debug Mode

  • 确保您没有启动混合模式过程

  • 尝试将 CPU 目标设置为 X86而不是 中央处理器(在 x64计算机上)

  • Uncheck the 优化代码 checkbox for 调试模式 in Project Properties->Debug

  • 取消选中 < em > Project Properties-> Build 中的 优化代码复选框

  • 在 < em > 高级编译器设置中取消选中 Enable Optimizations

  • (ASP.NET)如果是这样,请检查 夜行者的回答

  • (ASP.NET)如果是这样,请检查 this answer (by matrixugly)

  • (ASP.NET)确保在 韦伯选项卡上启用了 Edit and Continue(vs2010)

  • (ASP.NET)转到 属性 > 网页 > 伺服器,确保 Enable and continueUse Visual Studio Development Server下被检查。

  • (ASP.NET WebAPI)在尝试编辑 Controller 的方法之前,请确保已经使用断点停止了该方法。

  • (vs2017)转到 工具 > 选项 > 调试取消检查(取消选择)‘编辑并继续’。这实际上是“传统”建议的反面(见本文中的其他观点)。它不允许你在你的 跑步程序中进行实际的修改(也就是说,它不会热交换你所做的代码修改)——它只是允许你编辑你的代码(也就是说,它可以防止烦人的信息和“锁定”你的编辑器)。

  • 转到 工具 > 选项 > 调试 > 常规并确保 要求源文件与原始版本完全匹配未被检查。

  • 选中“启用 Windows 调试堆分配器”(仅本机)[ VSCommunity2017]

  • 你在使用 MicrosoftFakes 吗? 它禁止编辑和继续。

  • 通过选择 Task Manager.VS 中的 结束进程树来杀死所有的 * . vshost.exe实例。 VS 将重新生成一个正确的实例。

  • 使用 < em > Debug-> Delete All Breakpoints 删除所有断点

  • 启用并继续 工具 > 选项 > 调试菜单和 项目设置中都存在。两个地方都要检查。扩展的智能跟踪设置不支持“编辑 & 继续”。

  • Be sure 调试信息 in Project Properties > Build > Advanced > Output > Debug Info is set to Full

  • 某些插件可能会干扰。请先禁用/卸载,然后再尝试其他解决方案。

  • 如果您没有给予足够的关注,那么在尝试修复这个问题时出现的错误可能会变成其他更容易诊断的问题。例如。包含 lambda 表达式的方法不能支持编辑和继续。

  • 确保 System 变量 COR_ENABLE_PROFILING没有设置为 1。有些分析器在安装时设置这个,卸载后则保持不变。打开一个命令提示符并键入 set快速检查您的系统是否受到影响,如果是这样,删除变量或设置为 0:

    • 在 Windows8及以上版本中,搜索 系统(控制面板)。
    • 单击 高级系统设置链接。
    • 环境变数
    • 移除 COR_ENABLE_PROFILING
  • 注意 未经证实的情况(如问题中所报告的)和 未经证实的编辑


* by‘ you’,I mean The access of The page who is hamping his head on a key to find The Solution。


如果没有在这里列出,请随意编辑这个答案来添加您的变通方法!

嵌入互操作类型视觉工作室应设置为假

I had this happen in a linked class file. The rest of the project allowed E&C, but I got the same error editing the linked file. Solution was to break linked file into it's own project and reference the project.

“编辑并继续”,如果启用,将只允许您在代码处于中断模式时编辑代码: 例如,通过异常暂停执行或通过触发断点。

这意味着当执行没有暂停时,您可以编辑代码 不行!当涉及到调试(ASP.NET) Web 项目时,这是非常不直观的,因为您通常希望在请求之间进行更改。此时,您的(可能)调试没有运行代码,但它也没有暂停!
要解决这个问题,您可以点击“打破所有”(或按 Ctrl + Alt + Break)。或者,在某个地方设置一个断点(例如,在 Page_Load事件中) ,然后重新加载页面,这样在遇到断点时执行会暂停,而 现在可以编辑代码。甚至 .cs文件中的代码。

我也面临同样的问题。我的问题是,我可以修改一个文件,但不能修改另一个(两个都在同一个项目中)。后来我发现我无法修改的文件也是另一个项目的一部分。未加载另一个项目(Unit Test) ,而 聪明 VS 调试器显示未加载该给定文件的程序集并且不允许更改的错误。真奇怪!

因此,我必须卸载单元测试项目并继续 EnC 调试。

我有一个解决方案的数据库项目,阻止了网络表单项目被编辑。

我在数据库项目上点击“卸载”,现在一切都很顺利。

For VS2017 it can help to remove the .suo file in your solution, it worked for me. :)

我在 VisualStudio2005中遇到了同样的问题。我的配置是64位。它在其中一个 VS 解决方案上工作得很好,但在另一个 VS 解决方案上就不行了。我注意到我的 只有启用了“启用编辑和继续”的项目,我想在调试模式下进行更改。当我为我的 启动项目选择“启用并继续”时,这个问题终于解决了。

除了需要启用和继续之外,没有进行任何配置更改。

似乎不合逻辑,但唯一的办法是禁用编辑和继续从 VS 2017选项... 然后 AspNet 编辑和继续开始工作..。

对我有效的方法是取消“使用管理兼容模式”下的

工具-> 选项-> 调试

TBN: 检查或取消检查“要求源文件与原始版本完全匹配”似乎不会影响 E & C

希望这个能帮上忙。

启用编辑并仅继续工作运行 IISExpress。 不要在本地 ISS 或外部主机上工作。

For me, it was happening after I had hit a breakpoint, had done some edits, then continued on stepping through the code, then finally hit F5 or "Continue" to get to the end and out of my code block.

在尝试了“删除所有断点”选项(提示符上的 Ctrl + Shift + PrtScn 和 OK)并进行了“全部重建”之后,我的错误日志中仍然有一个关于我的项目未加载的 DLL 的错误... “无法应用更改,x.DLL 未加载”。重新启动 VisualStudio 后,一切又恢复正常。对我来说,事情就是这么简单。

这里的其他东西对我来说不起作用,比如“需要源文件与原始版本完全匹配”在开始工作之前和之后都被检查过,并且在我的 x64机器上以“任何 CPU”为目标也很好(不需要指定 x86或 x64)。我在工具 > 选项 > 调试和项目属性 > “ Web”选项卡设置中启用了“启用编辑并继续”。

在莱德遇到了麻烦。我直接打开了 .csproj文件,而不是 .sln文件。结果是,即使我单击了调试按钮,运行时配置也没有设置为调试。您会注意到调试按钮旁边的工具栏中显示的是 <No Configurations>

我加上我的答案是因为解决这个问题的方法还没有被明确提及。实际上帮助我的是这篇文章:

Http://www.rubencanton.com/blog/2012/02/how-to-fix-error-changes-are-not-allowed-while-code-is-running-in-net.html

以下是对解决方案的简短描述:

  1. Stop running your app.
  2. 转到工具 > 选项 > 调试 > 编辑并继续
  3. Disable “Enable Edit and Continue”

Note how counter-intuitive this is: I had to 这个able (uncheck) "Enable Edit and Continue".

然后,这将允许您在编辑器中更改代码,而不会收到“代码运行时不允许更改”的消息。

然而,请注意,您所做的代码更改不会反映在您正在运行的程序中——因为您需要停止并重新启动您的程序(从我的头脑中我认为模板/ASPX 的更改确实得到反映,但不是 VB/C # 的更改,即“代码后面”的代码)。

我安装了 stackify,当我在图标托盘上启用这个时,它用编辑停止了我的调试,所以我发现

  • 关闭视觉工作室,在我的情况下是 vs2017
  • 转到图标托盘,右键单击堆栈图标并禁用.NET Profiler
  • Open Visual Studio 使用调试器在调试模式下再次运行应用程序,它允许我在调试时进行编辑

see image

自从我把 VS2019升级到16.4.3之后,我就遇到了这个烦人的问题,这让我头疼不已。
最后我用这种方法解决了这个问题: < br/> < br/> 停止调试
2. Select the solution from "Solution Explorer"
物业窗口中,将 “活动配置”属性从 “释放任何 CPU”改为 < b > “ Debug | AnyCPU”
在“调试”> “选项”> “常规”中,选中“ 编辑并继续”复选框 < br/> < br/> 这招对我管用,希望对你也管用。

VS2019-ASP.NET 表单 在我的例子中,Tools-Options-Windows 窗体设计器-“ Optimized Code Generation”<-为 false

自从 VS2013以来,“编辑并继续”没有在这两个特殊的项目中工作过,所以我一直保留着它。在 VS2022上运行它的新尝试最终产生了一个原因:

关于错误

如果您在 On Error 中编辑代码,则会得到“ Edits were made which can not be coding”错误。设置错误列表 Show Options to Build + Intellisense 你最终会看到错误“在活动语句周围更新 On Error 语句需要重新启动应用程序”,这是阻碍继续执行的原因。

遗憾的是,由于一个非常特殊的原因,我有意为这两个特殊项目保留了这种遗留的错误处理方法,并且需要进行结构化错误处理是生产力的一个主要挫折。

但是现在我需要使用一些不再兼容 VS2013的现代库,所以我不得不继续前进。