112

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

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

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

我还在MSDN 网站上找到了这篇文章:

不支持的场景

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

  • 在 Windows 98 上调试。

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

  • SQL 调试。

  • 调试 Dr. Watson 转储。

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

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

  • 使用 Attach to 调试应用程序,而不是使用 Debug 菜单中的 Start 运行应用程序。

  • 调试优化代码。

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

  • 由于构建错误导致新版本构建失败后调试旧版本的代码。

但我可以对这个列表中的每一项都回答“否”。

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

4

37 回答 37

78

###其他适用的解决方案#

如果您尝试快速修复“编辑并继续” ,以下是一个不完整的、无序列表的可能解决方案列表。*

  • 确保您处于调试模式

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

  • 尝试将 CPU 目标设置为x86而不是AnyCPU(在 x64 机器上)

  • 项目属性->调试中取消选中调试模式的优化代码复选框

  • 取消选中Project Properties->Build中的Optimize Code复选框

  • 高级编译器设置中取消选中启用优化

  • (ASP.NET)如果是这种情况,请检查nightcoder 的答案

  • (ASP.NET)如果是这种情况,请检查此答案(通过 matrixugly)

  • (ASP.NET) 确保在Web选项卡上启用了编辑并继续(vs2010)

  • (ASP.NET) 转到Properties > Web > Servers,并确保在Use Visual Studio Development Server下选中Enable and continue

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

  • (vs2017) 转到工具 > 选项 > 调试取消选中(取消选择)“编辑并继续”。这实际上与“传统”建议相反(请参阅本文中的其他几点)。它不允许您在正在运行的程序中实际进行更改(即它不会热交换您所做的代码更改) - 它只是允许您编辑您的代码(即它可以防止烦人的消息并“锁定”您的编辑器)。

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

  • 检查启用 Windows 调试堆分配器(仅限本机)[VS Community 2017]

  • 你在使用微软假货吗?它禁止编辑并继续。

  • 通过在任务管理器中选择End Process Tree来终止所有*.vshost.exe实例。VS 将重新生成一个正确的实例。

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

  • 启用并继续存在于工具 > 选项 > 调试菜单和项目设置中。一定要检查这两个地方。扩展的 Intellitrace 设置不支持编辑并继续。

  • 确保Project Properties > Build > Advanced > Output > Debug Info的Debug Info设置为Full

  • 某些插件可能会干扰。通过禁用/卸载进行检查,然后再次尝试其他解决方案。

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

  • 确保系统变量COR_ENABLE_PROFILING未设置为1. 一些分析器在安装时设置它并在卸载后保留它。打开命令提示符并键入set以快速检查您的系统是否受到影响,如果是,请删除变量或将其设置为0

    • 在 Windows 8 及更高版本中,搜索系统(控制面板)。
    • 单击高级系统设置链接。
    • 单击环境变量
    • 消除COR_ENABLE_PROFILING
  • 请注意不受支持的场景(如问题中所述)和不受支持的编辑


* 通过“你”,我的意思是页面的访问者正在敲击键盘以找到解决方案。


如果此处未列出,请随时编辑此答案以添加您的解决方法!

于 2014-12-28T01:11:12.577 回答
23

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

于 2011-10-28T13:37:16.407 回答
22

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

Gallio 似乎有很多粗糙的边缘,最好不要使用 MbUnit 3.0,而是使用 MbUnit 2.0 框架,但使用 Gallio 运行器,您无需从安装程序(也安装了 Visual Studio 插件)安装即可运行。

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

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

这是来自 TypeMock 支持的答案:

在进一步查看编辑和继续问题并与 Microsoft 讨论后,我们得出的结论是 Isolator 无法解决。Isolator 实现了一个 CLR 分析器,根据我们的研究,一旦启用并附加了 CLR 分析器,编辑和继续就会自动禁用。很抱歉,这不再被视为错误,而是 Isolator 的限制。

于 2009-07-20T14:53:57.907 回答
11

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

Debug->Delete All Breakpoints

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

于 2009-10-23T02:28:18.893 回答
6

“编辑并继续”启用后,仅允许您在代码处于中断模式时编辑代码:例如,由于异常暂停执行或遇到断点。

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

于 2016-07-29T12:48:15.227 回答
5

几件事要检查

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

编辑

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

如果它适用于新项目,那么它可能会更加微妙。我会尝试以下。

  • 备份 HKCU:\Software\Wow6432Node\VisualStudio\9.0 (也许只是重命名)
  • 删除相同的密钥
  • 再次尝试复制
于 2009-06-18T00:42:27.350 回答
5

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

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

于 2011-01-03T15:05:23.540 回答
4

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

默认情况下,此参数始终设置为“Full”,但一个神秘的 poltergeist 在昨晚更改了此参数。:)

PS 我在 Visual Basic .Net 中使用 Visual Studio 2010

于 2010-08-25T13:43:32.157 回答
4

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

问候,

亚当。

于 2011-06-14T16:10:09.713 回答
4

我发现即使在项目属性下构建和调试选项卡设置为调试并且所有其他设置都是正确的,我仍然收到消息,但是在构建菜单下挖掘更多之后选择配置管理器...并确保选择调试那里也有两个地方。去看看......他们需要设置多少个不同的地方来设置调试??????即使您将项目 - 配置设置为调试,然后在构建 - 管理器下它没有更改,因此您在那里也更改了相同的设置项目配置 - 似乎又是一个微软问题......。

于 2011-08-05T15:57:26.907 回答
4

此问题是由于 Intellitrace 设置造成的

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

否则这将不允许编辑并继续..

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

于 2011-08-20T17:41:46.980 回答
4

以下拍摄帮助我使用了 VS2010:

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

于 2013-02-28T09:02:51.770 回答
3

当调试器没有遇到断点或者您没有点击 Break All(暂停)时,就会发生这种情况。不可能这么简单吧?

于 2009-06-18T01:27:57.290 回答
3

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

于 2010-02-18T08:43:29.833 回答
3

我在 Microsoft Visual Studio 2008 中遇到过这个问题,解决方案很简单。当您运行项目时,请设置为“调试”模式而不是“发布”。另一个人的解决方案可能很有用。

于 2013-08-08T06:14:48.870 回答
2

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

于 2010-12-06T14:53:45.450 回答
2

我今天遇到了这个问题 - 事实证明,将 Debug Info 设置为 pdb-only(或者我想没有)将阻止 Edit and Continue 工作。

首先确保您的调试信息设置为“完整”!

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

于 2014-08-14T23:12:50.320 回答
1

在我的情况下,只需重置为默认调试器设置并设置 IntelliTrace-> only intellytrace events 有帮助

于 2010-12-20T15:28:20.753 回答
1

一些似乎有助于使用 VS2010 的事情:

  • 转到工具、选项、调试、常规,并确保未选中“要求源文件与原始版本完全匹配”。
  • 多个 .vshost.exe 实例可能会被遗留下来,例如从停止的进程中分离 VS 调试器。这也会干扰断点和编译。使用任务管理器的“进程”选项卡,通过右键单击每个实例并选择“结束进程树”来终止 .vshost.exe 的所有实例。VS 将创建一个新实例。
于 2011-11-04T01:47:27.347 回答
1

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

于 2012-04-20T05:37:21.113 回答
1

我做了所有其他答案中提到的所有更改,但都没有奏效。我学到了什么?启用并继续存在于工具 > 选项 > 调试菜单和项目设置中。在我检查两者之后,启用和继续对我有用。

于 2013-10-29T04:10:39.873 回答
1

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

于 2018-03-16T14:48:34.297 回答
1

对我有用的是取消选中“使用托管兼容模式”下

工具 -> 选项 -> 调试

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

希望这能有所帮助。

于 2018-04-13T10:47:49.483 回答
1

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

于 2018-04-22T18:16:03.777 回答
1

我正在添加我的答案,因为尚未明确提及为我解决它的事情。实际上对我有帮助的是这篇文章:

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

这是解决方案的简短描述:

  1. 停止运行您的应用程序。
  2. 转到工具 > 选项 > 调试 > 编辑并继续
  3. 禁用“启用编辑并继续”</li>

请注意这是多么违反直觉:我必须禁用(取消选中)“启用编辑并继续”。

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

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

于 2019-11-30T08:04:14.163 回答
1

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

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

看图片

于 2019-12-04T07:48:09.073 回答
1

自从我将 VS 2019 升级到 16.4.3 后,我遇到了这个烦人的问题,这让我很头疼。
最后我以这种方式解决了这个问题:

1. 停止调试
2. 从“解决方案资源管理器”中选择解决方案
3. 在“属性”窗口中,将“活动配置”属性从“释放|任何 CPU”更改为“调试|任何 CPU”
4 . 在 Debug > Options > General 检查Edit and Continue复选框

这对我有用,希望它也对你有用。

于 2020-01-18T10:30:40.393 回答
0

嵌入互操作类型 Visual Studio 应设置为 false

于 2015-11-06T01:30:11.133 回答
0

我在链接的类文件中发生了这种情况。项目的其余部分允许 E&C,但我在编辑链接文件时遇到了同样的错误。解决方案是将链接文件分解为它自己的项目并引用该项目。

于 2015-12-01T16:05:18.560 回答
0

我遇到了同样的问题。我的问题是我可以修改一个文件,但不能修改另一个文件(两者都在同一个项目中)。后来我发现我无法修改的文件也是另一个项目的一部分。未加载另一个项目(单元测试),智能VS 调试器显示未加载此给定文件的程序集的错误,并且不允许更改。多么奇怪!

因此,我不得不卸载单元测试项目并继续进行 EnC 调试。

于 2017-02-24T06:10:08.920 回答
0

我在解决方案中有一个数据库项目,它阻止了 webforms 项目的编辑。

我在数据库项目上单击“卸载”,现在一切正常。

于 2017-11-10T04:08:42.410 回答
0

对于 VS2017,它可以帮助删除解决方案中的 .suo 文件,它对我有用。:)

于 2017-11-29T10:47:18.723 回答
0

我在 Visual Studio 2005 中遇到了同样的问题。我的配置是 64 位。它在 VS 解决方案之一上运行良好,但在另一个解决方案上运行良好。我注意到我为我想在调试模式下进行更改的项目启用了“启用编辑并继续”。当我也为我的启动项目选择“启用并继续”时,这终于为我解决了。

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

于 2018-02-03T17:22:32.547 回答
0

对我来说,它发生在我遇到断点、进行一些编辑、然后继续单步执行代码、最后按 F5 或“继续”以到达末尾并退出我的代码块之后。

在尝试“删除所有断点”选项(提示符上的 Ctrl+Shift+PrtScn 和 OK)并执行 Rebuild All 后,我的错误日志中仍然有一个关于我的项目未加载的 DLL 的错误...“无法应用更改,未加载 x.DLL”。重新启动 Visual Studio 后,一切正常。对我来说,结果就是这么简单。

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

于 2018-09-20T19:45:13.653 回答
0

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

于 2019-06-16T23:28:24.943 回答
0

VS2019 - ASP.NET 表单在我的情况下是工具 - 选项 - Windows 窗体设计器 - “优化代码生成” <- 到 false

于 2020-08-25T13:29:40.070 回答
0

自 VS2013 以来,“编辑并继续”对这两个特定项目不起作用,所以我一直在为这些项目保留它。让它在 VS2022 上运行的新尝试终于产生了一个原因:

出错时

如果您在 On Error 中编辑代码,则会收到“进行了无法编译的编辑”错误。将错误列表显示选项设置为 Build + Intellisense,您最终会看到错误“围绕活动语句更新 On Error 语句需要重新启动应用程序”,这是阻止继续执行的原因。

可悲的是,由于一个非常具体的原因,我故意为这两个特定项目保留了这种遗留错误处理方法,并且需要进行结构化错误处理是一个重大的生产力挫折。

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

于 2022-03-05T00:21:41.680 回答