编辑并继续:“在…时不允许更改”


108

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

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

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

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

不支持的方案

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

  • 在Windows 98上进行调试。

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

  • SQL调试。

  • 调试Dr.Watson转储。

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

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

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

  • 调试优化的代码。

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

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

但是我可以对列表中的每个项目回答“否”。

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


2
您是否在发布模式下运行?您在X64上运行吗?
Sam Saffron

您尝试进行E&C的方法真的很短吗?也许内联了(尽管我认为内联不会在调试中发生)
Sam Saffron

它不适用于任何方法,无论是很短还是很长的时间。
nightcoder

您是否尝试过修复安装?
理查德·安东尼·海因

3
我想我应该补充一下,E&C是一个非常复杂的功能。调试器的测试矩阵非常庞大,要使E&C在每种组合中都能正常工作将非常困难。但这也是一个非常重要的功能,因此我们采取了很多限制措施以确保它能上市。在我们施加的故意限制下,它是我们提供的最高质量的功能之一。
杰·巴祖兹

Answers:


21

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

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

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

PS。由Nightcoder编辑:
就我而言为例,禁用TypeMock Isolator模拟框架)终于有所帮助!编辑并继续工作!!!!

这是TypeMock支持的答案:

在进一步研究了“编辑并继续”问题之后,并与Microsoft进行了交谈,我们得出结论,它无法为Isolator解决。隔离器实现了CLR事件探查器,根据我们的研究,一旦启用并附加了CLR事件探查器,就会自动禁用“编辑和继续”。很抱歉,这不再被视为错误,而是隔离器的局限性。


69

其他适用解决方案

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

  • 确保你在 调试模式
  • 确保您没有启动混合模式进程
  • 尝试将CPU目标设置为x86而不是AnyCPU(在x64计算机上)
  • 取消选中优化代码复选框调试模式项目属性->调试中
  • 取消选中启用优化高级编译器设置
  • (ASP.NET)检查Nightcoder的答案如果是这种情况,
  • (ASP.NET)检查此答案(按矩阵)如果是这种情况,
  • (ASP.NET)确保在Web上启用了“ 编辑并继续选项卡(vs2010)
  • (ASP.NET)转到“ 属性”>“ Web”>“服务器”,并确保在“ 使用Visual Studio开发服务器”下选中了“ 启用并继续”。
  • (ASP.NET WebAPI)在尝试编辑它之前,请确保已使用断点停止Controller的方法。
  • (vs2017)转到工具>选项>调试,然后取消选中(取消选中)“编辑并继续”。这实际上与“常规”建议相反(请参阅本文中的其他几点)。它不允许您实际在正在运行的程序中进行更改(即,它不会热交换您所做的代码更改)-仅允许您编辑代码(即,它可以防止令人讨厌的消息并“锁定”您的编辑器) )。
  • 转到工具>选项>调试>常规,并确保未选中“ 要求源文件与原始版本完全匹配”
  • 选中启用Windows调试堆分配器(仅本地)[VS Community 2017]
  • 您正在使用Microsoft伪造品吗?它禁止编辑并继续。
  • 通过在任务管理器中选择“ 结束进程树”,杀死所有* .vshost.exe实例。VS将重新生成正确的实例。
  • 使用Debug-> Delete All Breakpoints删除所有断点
  • “启用”和“继续”同时存在于“ 工具”>“选项”>“调试”菜单和“ 项目设置”中。确保检查两个地方。扩展的Intellitrace设置不支持“编辑并继续”。
  • 务必调试信息项目属性>构建>高级>输出>调试信息设置为
  • 某些插件可能会造成干扰。通过禁用/卸载进行检查,然后重试其他解决方案。
  • 如果没有引起足够的重视,则在尝试解决此错误时可能会遇到其他易于诊断的错误。例如,包含lambda表达式的方法不支持编辑并继续。
  • 确保系统变量COR_ENABLE_PROFILING未设置为1。一些探查器在安装时进行设置,并在卸载后保持原样。打开命令提示符并键入set以快速检查您的系统是否受到影响,如果这样,请删除该变量或将其设置为0

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


*“您”,是指页面的访问者正在用键盘敲打头以找到解决方案。


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


5
那是COR_ENABLE_PROFILING ...不知道为什么要设置它。谢谢。现在不再用锤子敲键盘了。
Florian Lagg

2
我尝试了所有方法,但都尝试了。然后我意识到我必须处于中断模式(debug-> break all)或处于中断点。请将此添加到您的列表。msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar

1
对我
有用

2
有一件事是解决它,我这里不再赘述:我不得不DIS能(选中)在工具>选项>调试“启用编辑并继续”选项。这与您直觉上的想法完全相反,但这对我来说是固定的(即,避免出现此令人讨厌的消息,而让我编辑我的代码)。
leo

1
@leo这是社区Wiki,因此您可以自由编辑。“编辑”按钮对您不起作用吗?我看到您有足够的声誉来做到这一点。附言 我为您的答案添加了参考,以减少分散。
beppe9000 '19

23

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


3
还需要在调试时按Pause键,然后才能编辑代码
Alexey Obukhov,2016年

如果我使用本地iis,则禁用“启用并继续”
Khoshtarkib

11

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

Debug->Delete All Breakpoints

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


5

几件事要检查

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

编辑

我认为这无关紧要,但是请确保已为目标平台启用了托管过程。可能无济于事。

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

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

2
什么是混合模式过程?我什至尝试了新的winforms项目。
nightcoder

我没有HKCU:\ Software \ Wow6432Node \节点
nightcoder

@nightcoder然后尝试HKCU:\ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar


5

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

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


4

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

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

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


4

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

问候,

亚当。


4

我发现即使在项目属性下将“构建和调试”选项卡设置为“调试”并且所有其他设置都正确,我仍然会收到消息,但是在“构建”菜单下挖掘了更多内容后,请选择“配置管理器...”并确保选择了“调试”还有两个地方。去图...他们需要在几个不同的地方设置调试?????? 即使您将Project-Configuration设置为Debug,然后在Build-Manager下也没有更改,所以您也在那里更改了相同的设置Project Configuration-似乎又是一个Microsoft问题……。


4

此问题是由于Intellitrace设置

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

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

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


对我来说,这就是问题!
beppe9000

在Visual Studio工具中的“ Intellitrace”中搜索了所有选项,而在VS Community 2017中没有此类选项。
vapcguy

4

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

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


3

当调试器未达到断点或您未达到“全部中断”(暂停)时,就会发生这种情况。不可能那么简单吗?


当调试器遇到断点并且我试图更改代码中的某些内容时,就会发生这种情况。
nightcoder

3

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


3

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


2

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



1

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

  • 转到工具,选项,调试,常规,并确保未选中“要求源文件与原始版本完全匹配”。
  • 可以保留多个.vshost.exe实例,例如,从已停止的进程中分离VS调试器。这将干扰断点并进行编译。通过右键单击每个实例并选择“结束进程树”,使用任务管理器的“进程”选项卡杀死.vshost.exe的所有实例。VS将创建一个新实例。

1

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


1

我做了所有其他答案中提到的所有更改,但没有一个起作用。我学到了什么?“启用”和“继续”同时存在于“工具”>“选项”>“调试”菜单和“项目”设置中。选中两者后,“启用”和“继续”对我有用。


3
什么项目设置?你太含糊
Adaptabi

@Adaptabi他们的意思是,如果您右键单击项目名称,单击属性,然后(如果是Web项目)单击Web,则存在一个复选框,以确保在那里选中“启用编辑并继续”。
vapcguy

1

我今天遇到了这个问题-事实证明,将“调试信息”设置为“仅pdb”(或者我没有想到)会阻止“编辑并继续”工作。

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

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


1

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


究竟!这是违反直觉的,但对我也有用的禁用 “编辑并继续”。它不会“热交换”您所做的更改,但至少您可以简单地编辑代码,然后在重新启动应用程序后生效。
leo

1

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

工具->选项->调试

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

希望这会有所帮助。



1

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

1.停止调试
2.从“解决方案资源管理器”中选择解决方案
3.在“ 属性”窗口中,将“活动配置”属性从“发布|任何CPU”更改为“调试|任何CPU”
4 。在“调试”>“选项”>“常规”中选中

对我有用的“ 编辑并继续”复选框,并希望它也对您有用。



0

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


0

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

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


0

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

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


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.