编辑并继续:“更改是不允许的…”

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

当debugging器已经连接到一个已经运行的进程或被debugging的代码在构build或运行时被优化时,不允许修改。

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

我也在MSDN网站上find这篇文章 :

不支持的scheme

“编辑并继续”在以下debuggingscheme中不可用:

  • 在Windows 98上debugging。

  • 混合模式(本机/托pipe)debugging。

  • SQLdebugging。

  • debuggingDr.Watson转储。

  • 在未处理的exception之后编辑代码时,未选中“展开未处理的exception时的调用堆栈”选项。

  • debuggingembedded式运行时应用程序。

  • 使用“附加到”debugging应用程序,而不是使用“debugging”菜单中的“开始”运行应用程序。

  • debugging优化的代码。

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

  • 由于构build错误,新版本无法生成后,debugging旧版本的代码。

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

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

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

加利奥似乎有相当多的粗糙的边缘,最好不要使用MbUnit 3.0,但使用MbUnit 2.0框架,但使用gallio亚军,没有从安装程序(其中也安装了一个Visual Studio插件)安装运行。

顺便说一句,我甚至在“禁用”他加利奥插件后的问题。 只有卸载解决了这个问题。

PS。 nightcoder编辑:
在我的情况下禁用TypeMock隔离器 (嘲笑框架)终于帮助 ! 编辑并继续现在工作!

这是TypeMock支持的答案:

在深入讨论编辑和继续问题并与微软交stream之后,我们得出了Isolator无法解决的结论。 隔离器实现了一个CLR分析器,根据我们的研究,一旦CLR分析器被启用和附加,编辑和继续被自动禁用。 我很遗憾地说这不再是一个错误,而是隔离器的限制。

适用解决scheme

这里是一个不完整的, 无序的可能的解决scheme列表,如果你想修改Edit&Continue,

  • 确保您处于debugging模式
  • 确保你没有启动混合模式的过程
  • 尝试将CPU目标设置为x86而不是AnyCPU (在x64机器上)
  • 在“ 项目属性” – >“debugging”中取消选中debugging模式的“ 优化代码”checkbox
  • 高级编译器设置中取消选中启用优化
  • (ASP.NET)如果是这种情况,请检查nightcoder的答案
  • (ASP.NET)检查这个答案(通过matrix)如果是这样的话
  • (ASP.NET)确保在“ Web”选项卡(vs2010)上启用了“ 编辑并继续”
  • (ASP.NET)转到“ 属性”>“Web”>“服务器” ,确保在“ 使用Visual Studio Development Server”下选中“ 启用并继续”
  • 转到工具>选项>debugging>常规 ,并确保要求源文件与原始版本完全匹配未选中。
  • 你在使用Microsoft Fakes吗? 它禁止编辑和继续。
  • 通过在任务pipe理器中select结束进程树来杀死所有* .vshost.exe实例。 VS会重新生成一个正确的实例。
  • 使用Debug-> Delete All Breakpoints删除所有断点
  • 启用并继续存在于工具>选项>debugging菜单中,也存在于项目设置中 。 一定要检查两个地方。 扩展的Intellitrace设置不支持编辑和继续。
  • 确保项目属性>生成>高级>输出>debugging信息中的debugging信息设置为完整
  • 有些插件可能会干扰。 通过禁用/卸载,然后再次尝试其他解决scheme进行检查。
  • 如果你没有引起足够的重视,那么在解决这个问题时你得到的错误可能会变成更容易诊断的东西。 例如,包含lambdaexpression式的方法不支持编辑并继续。
  • 确保系统variablesCOR_ENABLE_PROFILING没有被设置为1 。 有些configuration文件在安装时设置此设置,并在卸载后保留此设置。 打开一个命令提示符并键入set以快速检查您的系统是否受到影响,如果是这样的话删除该variables或将其设置为0

    • 在Windows 8及更高版本中,search系统 (控制面板)。
    • 点击高级系统设置链接。
    • 点击环境variables
    • 删除COR_ENABLE_PROFILING
  • 请注意不支持的情况 (如问题中所述)以及不受支持的编辑 。

*由'你',我的意思是在键盘上敲打他的头寻找解决scheme的页面的访问者。

如果您正在debuggingASP.NET应用程序,请转至“属性”>“Web”>“服务器”,并确保在“使用Visual Studio Development Server”下选中“启用并继续”。

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

 Debug->Delete All Breakpoints 

我想这是因为我删除了一个在代码中有断点的aspx页面,然后我创build了另一个同名的页面。 这可能会混淆VS 2008。

几件事情检查

  • 确保你的编译被设置为Debug vs. Release
  • 确保你没有启动混合模式的过程
  • 如果在64位计算机上确保将CPU目标设置为x86而不是AnyCPU

编辑

我不认为这应该很重要,但要确保为目标平台启用主机进程。 可能不会帮助。

如果它重新为新的项目,那么它可能是更微妙的东西。 我会尝试以下。

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

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

问候,

亚当。

上述解决scheme都不适用于我(在64x机器上运行)。

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

我发现,即使在项目属性build设和debugging选项卡设置为debugging和所有其他设置是正确的我仍然收到消息,但是在挖掘更多的生成菜单下selectconfigurationpipe理器…并确保debugging被选中在两个地方也是如此。 去图…有多less不同的地方,他们需要设置debugging?????? 即使您将Project – Configuration设置为Debug,然后在Build-Manager下也不会更改,因此您也必须更改相同的设置Project Configuration – 似乎又是一个微软问题…….

这个问题是由于Intellitrace设置

如果Intellitrace已启用,请确保只检查Intellitrace事件

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

如果你点击Intellitrace选项,你会看到警告。

对于我来说,由于我不理解的原因,“高级编译器设置”中的“生成debugging信息”设置被设置为“pdb-only”而不是“Full”。

默认情况下,这个参数总是被设置为“Full”,但是一个神秘的怪物在昨天晚上改变了这个参数。 🙂

PS我在与Visual Studio 2010的Visual Basic .Net

当debugging器没有命中断点或者没有命中断全部(暂停)时,会发生这种情况。 这可能不是那么简单吗?

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

去工具,选项,debugging,一般,并确保“要求源文件完全匹配的原始版本”未选中。

我在Microsoft Visual Studio 2008中遇到了这个问题,解决scheme很简单。 当你运行你的项目时,请在“debugging”模式下设置而不是“释放”。 另一个人的解决scheme可能是有用的。

“编辑并继续”(如果启用)只允许编辑处于中断模式的代码:例如,通过暂停exception或按下断点来暂停执行。

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

错误提示可能的原因是:“正在debugging的代码在构build或运行时进行了优化”。 转到项目属性 – >debugging,取消选中debugging模式的优化代码框。

如果我创build一个新的项目,在debugging时编辑不起作用。 如果我创build一个新的网站,按照预期进行debugging时进行编辑。

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

  • 去工具,选项,debugging,一般,并确保“要求源文件完全匹配的原始版本”未选中。
  • 多个.vshost.exe实例可以从例如将VSdebugging器从停止的进程中分离出来。 这会干扰断点并编译。 使用任务pipe理器,进程选项卡通过右键单击每个实例并select结束进程树来终止.vshost.exe的所有实例。 VS会创build一个新的实例。

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

我做了所有其他答案中提到的变化,没有任何工作。 我学到了什么? “工具”>“选项”>“debugging”菜单中以及“项目”设置中均存在启用和继续 。 我检查后,启用和继续为我工作。

在我的情况只是重置为默认的debugging器设置,并设置IntelliTrace->只有intellytrace事件帮助

我今天遇到这个 – 事实certificate,debugging信息设置为仅限pdb(或者没有,我会想象)将阻止编辑并继续工作。

确保您的debugging信息先设置为“全”!

项目属性>生成>高级>输出>debugging信息

embeddedinteroptypes的visual studio应该设置为false

我有一个链接的类文件发生这种情况。 该项目的其余部分允许E&C,但我有编辑链接文件相同的错误。 解决scheme是将链接文件分解成自己的项目并引用项目。

我面临同样的问题。 我的问题是,我可以修改一个文件,但不是另一个(都在同一个项目)。 后来我发现我无法修改的文件也是另一个项目的一部分。 另一个项目(unit testing)没有加载, 智能 VSdebugging器显示这个给定文件的程序集没有加载的错误,并且不允许更改。 多么奇怪!

因此,我不得不卸载unit testing项目并继续进行EnCdebugging。

我在解决scheme中有一个数据库项目,停止了webforms项目的编辑。

我点击数据库项目上的“卸载”,现在一切都很好用了。