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


144

有没有一种方法可以在Visual Studio中调试时启用文件编辑?我没有选中“要求源文件与原始版本完全匹配”复选框。没有什么不同的。我必须停止调试才能编辑文件。很烦人。我启用了“编辑并继续”。结果相同。我停用了“编辑并继续-相同的结果”。


我没看到您编辑过问题。您可以通过快速重新安装来解决此问题。
塞科

12
@Secko当我们谈论Visual Studio时,没有“快速重新安装”之类的东西
Zero3

@ Zero3大约在16年前,我在(int)1999-(int)2000左右使用它。长时间未使用过。
Secko '17

真正的问题是Visual Studio的“编辑并继续”设置无法使您进行编辑并继续。而是,这是一个奇怪的功能,可让您编辑代码,然后实际更改执行的代码以匹配您的编辑,然后从那里进行调试。即使有用,也很少起作用。它应该被称为“即时编辑和重新编译”之类的东西。关闭它可以让您在实际调试代码的同时仍调试已编译的代码。
MGOwen,

Answers:


234

据我所知,您可以取消选中“编辑并继续”复选框。

工具->选项->调试->编辑并继续>启用编辑并继续(取消选中)


60
这是我的解决方案-我不知道为什么联合国选中“编辑并继续”会允许我进行编辑...似乎违反直觉。无论如何,我会将其标记为答案。
山姆·舒特

7
违反直觉,但有效。
米尔恩,

2
如果将业务层拆分为解决方案中的一个单独项目,则此方法的反应会有所不同。在拆分之前,我能够在调试时毫无问题地编辑类。不幸的是,这种解决方案在这种情况下(我使用VS2013)尚未为我解决
Radderz 2014年

18
在Visual Studio 2015中,我在Debugging-> 的底部找到了此设置General
Zero3,2013年

13
如果您尝试执行此操作,但“启用编辑并继续”显示为灰色,则只需停止调试并返回选项即可。
拉夫维

19

扩展了里德的正确答案。

在调试模式下编辑文件时,将使用称为“编辑并继续”(通常缩写为ENC)的功能。这使用户可以在调试器中运行程序时更改其程序。

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

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

有几种原因可能会在您的计算机上禁用ENC

  • 某些配置文件默认情况下不启用ENC,必须显式启用它
  • 您可能正在64位操作系统上运行,并将.Net应用程序设置为“任何CPU”。 ENC在64位(CLR限制)上不可用。您必须将应用设置回x86才能使ENC正常工作

8
如果您不关心“编辑并继续”,而只想在应用程序运行时编写代码怎么办,那么您可以在执行过程中看到需要做什么,该怎么办?VS绝对会施加这种人为的限制,这是绝对不真实的。它并不需要在运行时读取源文件。没有技术原因为什么它必须锁定源文件。Xcode可以让您在应用程序运行时进行编码。更改仅在下一次运行时才适用。在VS中真的没有办法做到这一点吗?
devios1

1
如果我禁用“编辑并继续”,它将允许我在应用程序运行时编辑.cs文件,但仍会锁定.xaml文件。我正在寻找一种方法来完全禁用这种荒谬的锁定。
devios1 2016年

7
在应用程序运行时,它甚至都不允许我将文件添加到项目中!我不骗你,每天尝试20-30次,而VS完全阻止了它。短暂的“ wtf”时刻之后,我意识到该应用程序正在调试,因此我必须停止正在做的事情,杀死该应用程序,然后重新尝试。我无法在这些条件下工作,真令人感到惊奇的是,人们对此并不抱有很大的热情。这确实是在浪费我的生产力,使我无所适从。必须有一种解决方法!
devios1

1
@ devios1我经常做的事情是运行而无需调试(ctrl + f5),只要您不需要断点或其他任何东西就可以。
宾基

@ devios1相同。我希望有人(也许是我)能有时间完成此扩展。github.com/AndreasFurster/pause-edit-and-continue
保罗

8
  • UN选中“启用编辑并继续”(Tools -> Options -> Debugging -> Edit and Continue > Enable Edit and Continue
  • 构建您的应用。
  • 运行。
  • 停下来。
  • 重新检查“启用编辑并继续”。
  • 构建您的应用。
  • 运行。
  • 立即调试时尝试编辑文件。

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


1
亲爱的投票者,好的一句话是,为什么您要拒绝答案,请发表评论。
弗朗索瓦·博塔

这并不能解决我的问题,但是下面获得最高投票率的答案可以解决。
Kairan

6

您需要启用“ 编辑并继续”


2
此外,您需要处于断点,或单击暂停(全部中断)按钮。
McAden

@marcc:还有很多其他事情,这就是为什么我指向文档的原因。有关不受支持的更改的完整列表,请参见以下位置的“不受支持的方案”部分:msdn.microsoft.com/zh-cn/library/ms164927%28VS.80%29.aspx
Reed Copsey,2009年

4
Seckos(评分最高)答案对我有用(VS2015),与您的答案完全相反。
alrts

6

从MSDN

启用/禁用编辑并继续

  • 打开调试选项页面(工具/选项/调试)。滚动

  • 进入“编辑并继续”类别。要启用,请选择启用编辑

  • 和继续复选框。要禁用,请清除该复选框。注意。...

  • 单击确定。




2

如果您打开了“编辑并继续”功能,并且正在使用C#,则只有在调试器通过断点停止或通过“全部中断”手动进入应用程序的情况下,才可以编辑文件。例如,您仍然将无法编辑某些文件。WPF应用程序中的xaml文件,但它可以解决大多数问题。


1

如果您的源代码来自反编译的dll,请注意,反编译器可能会向Assemblyinfo.cs添加IgnoreSymbolStoreSequencePoints指令:

[程序集:Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]

为了加载pdb文件,必须删除此行,以便进行编辑并继续工作。



1

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

在此处输入图片说明

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.