如何在Visual Studio的调试模式下启用文件编辑?

149

在 Visual Studio 的调试过程中,有办法启用文件编辑吗? 我取消了“要求源文件与原始版本完全匹配”的复选框。 但这样并没有任何影响。我必须停止调试才能编辑文件。非常烦人。 我启用了“编辑并继续”选项。但结果相同。 我禁用了“编辑并继续”选项 - 结果也相同。


我没有看到你编辑了你的问题。你可以通过快速重新安装来解决这个问题。 - Secko
13
@Secko 当我们谈论 Visual Studio 时,不存在所谓的“快速重新安装”。 - Zero3
@Zero3 在我使用它的时候,大约是16年前,也就是在1999年到2000年之间。已经有很长一段时间没有用过了。 - Secko
这里的真正问题是Visual Studio的“编辑并继续”设置不能让您编辑并继续。相反,它是一个奇怪的功能,可以让您编辑代码,然后实际上更改正在执行的代码以匹配您的编辑,并从那里进行调试。即使这很有用,它也很少起作用。它应该被称为“即时编辑和重新编译”。将其关闭可以让您在仍在调试已编译的代码的同时编辑您的代码。 - MGOwen
12个回答

246
据我所知,您可以取消“编辑并继续”复选框。
工具 -> 选项 -> 调试 -> 编辑和继续 > 启用编辑和继续(取消勾选)

67
这对我来说是解决方案-我不知道为什么取消“编辑并继续”选项会让我可以编辑……这似乎很不符合直觉。总之,我会把这个标记为答案。 - Sam Schutte
7
反直觉,却有效。 - Milne
2
如果业务层在解决方案中拆分为单独的项目,则此操作会有所不同。在拆分之前,我能够在调试时轻松编辑类。不幸的是,在这种情况下(使用VS2013),这个解决方案对我没有起作用。 - Radderz
18
在Visual Studio 2015中,我发现这个设置在“调试”->“常规”底部。 - Zero3
14
如果您试图这样做,但是“启用编辑并继续”选项是灰色的,请停止调试并返回选项。 - Ravvy
显示剩余9条评论

20

在 Reed 的正确回答基础上,进一步解释。

当处于调试模式时,使用的是一项称为“编辑并继续”(通常缩写为 ENC)的功能来编辑文件。这允许用户在调试器运行程序时更改其程序。

启用 ENC 后,用户可以对其文件执行有限的编辑操作。下一个继续执行程序的动作(F10、F5 等)将导致编辑应用于正在运行的程序。如果成功,程序的执行将继续应用新代码。

如果未启用 ENC,则调试器不允许编辑文件。

计算机可能会禁用 ENC 的几个原因:

  • 某些配置文件默认未启用 ENC,必须显式启用
  • 您可能正在运行 64 位操作系统,并且将 .NET 应用设置为“任意 CPU”。ENC 在 64 位上不可用(CLR 限制)。您需要将应用程序重新设置为 x86,才能让 ENC 正常工作

10
如果您不关心编辑并继续功能,只想在应用程序运行时编写代码,以便在执行操作时可以查看需要完成的内容,该怎么办?VS实施这种人为限制是绝对不可思议的。它不需要在运行时读取源文件,也没有技术上需要锁定源文件的原因。Xcode可以轻松让您在应用程序运行时编写代码,但更改只会在下一次运行时应用。是否确实没有办法在VS中实现这一点? - devios1
1
如果我禁用编辑并继续,它将允许我在应用程序运行时编辑.cs文件,但仍会锁定.xaml文件。我正在寻找一种完全禁用这种荒谬锁定的方法。 - devios1
8
甚至在应用程序运行时,我也无法向项目添加文件!我不是开玩笑,每天大约有20-30次我想做点什么,但是VS完全阻止了我的操作。在经历了一瞬间的“怎么回事”之后,我意识到应用程序正在调试中,我必须停止手头的工作,关闭应用程序,然后重新尝试。我无法在这种情况下工作,真的很惊讶为什么人们对此没有抱怨。这真的影响了我的生产力,让我感到非常恼火。肯定有解决方法! - devios1
1
@devios1 我经常做的一件事就是直接运行而不进行调试(ctrl+f5),只要你不需要断点或其他什么东西,这是可以的。 - binki
@devios1 同感。我希望有人(也许是我)能找到时间完成这个扩展。https://github.com/AndreasFurster/pause-edit-and-continue - Paul

9
  • 取消"启用编辑和继续" (工具 -> 选项 -> 调试 -> 编辑和继续 > 启用编辑和继续)的勾选。
  • 构建您的应用程序。
  • 运行它。
  • 停止它。
  • 重新勾选 "启用编辑和继续"。
  • 构建您的应用程序。
  • 运行它。
  • 现在尝试在调试时编辑文件。

这对我有用。我认为这可能是与Visual Studio 2015相关的某些错误或同步问题。


1
亲爱的点踩者,留下为什么你要点踩这个回答的评论是一个好的做法。 - Francois Botha
这对我没有解决,但是下面得票最高的答案解决了。 - Kairan

6

来自MSDN

启用/禁用编辑和继续功能

  • 打开调试选项页面(工具/选项/调试)。向下滚动到“编辑和继续”类别。要启用,请选择“启用编辑和继续”复选框。要禁用,请清除复选框。注意...

  • 单击“确定”。


6

2
此外,您需要处于断点位置或单击暂停(Break All)按钮。 - McAden
@marcc:还有许多其他事情,这就是我指向文档的原因。有关不支持更改的完整列表,请参见此位置的“不支持的方案”部分:http://msdn.microsoft.com/en-us/library/ms164927%28VS.80%29.aspx - Reed Copsey
4
Seckos(最佳评分)的答案对我有用(VS2015),并且与您的答案完全相反。 - alrts

5
通常在调试期间编辑文件是可能的,但只有在您触发断点时才能进行编辑。
不过,有一些限制: - 您的新代码必须编译通过 - 您不能更改包含lambda表达式的函数中的代码

4
对我来说,这个链接 禁用 IntelliTrace 有效。
前往

工具 > 选项 > IntelliTrace > (取消勾选) 启用 IntelliTrace

或者 调试 > 选项 > IntelliTrace > (取消勾选) 启用 IntelliTrace

进入图像描述


2
以下选项中的去除勾选对我有用:

工具 > 选项 > 调试 > 常规 > 启用编辑并继续

enter image description here

*注意:在一些同行开发者的系统中,添加此勾选可以解决问题。


2

如果您开启了Edit and Continue功能,并且正在使用C#,则只有在调试器已停止(通过断点或手动中断应用程序)时才能编辑文件。您仍然无法编辑某些文件,例如WPF应用程序中的xaml文件,但它应该可以解决大多数问题。


1
我尝试过这种方法,对我有效。 转到CSProj或VbProj文件 -> 选择Asp.Net开发服务器/IIS Express ->调试器->启用编辑并继续->保存并运行。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接