代码之家  ›  专栏  ›  技术社区  ›  Devart

调试时编辑源代码

  •  9
  • Devart  · 技术社区  · 16 年前

    我有VS2005,目前正在调试ASP.net web应用程序。我想在代码隐藏文件中更改一些代码,但每次我在断点处停止并尝试编辑某些内容时,都会收到以下错误消息:“当调试器已附加到已运行的进程或正在调试的代码已优化时,不允许进行更改。”

    我很确定我启用了所有“编辑并继续”选项。有什么建议吗?

    7 回复  |  直到 16 年前
        1
  •  17
  •   Chris Bilson    16 年前

    这可能看起来违反直觉,但请关闭编辑并继续。

    在某个地方可能还有另一个“允许我编辑只读文件”或“即使在调试时也允许我编辑……真的不行!”的设置,但我没有2005年可以查看。

    在2008年,关闭编辑并继续,您可以在它运行时进行编辑(但这些更改不会应用。)

    如果你真的想使用编辑并继续,你还必须在项目设置的web选项卡上为项目启用它。

        2
  •  6
  •   user13276    16 年前

    应用程序实际上是基于您的代码的编译版本运行的。如果您对其进行修改,则必须重新编译它才能使您的更改生效,这意味着它需要将运行版本换成新的编译版本。这是一个非常困难的问题,这就是为什么我认为微软已经让这件事变得不可能了。这更多的是为了保护你不认为一些改变是在真正没有改变的情况下做出的。

        3
  •  2
  •   Steve Steiner    16 年前

    对于Asp.net,可以想到两种类型的“编辑和继续”。

    一个是经典的编辑和刷新浏览器。这是有效的,因为浏览器刷新会重新编译除预编译代码隐藏文件之外的所有内容。这并不被称为“编辑并继续”,尽管在实践中它提供了类似的效果。在此模式下,您无法更改代码隐藏文件,因为它们是预编译和部署的,但您可以更改几乎任何其他内容。

    另一种模式允许您更改文件背后的预编译代码,但仅限于此。..(这是Chris Bilson提到的需要在ASP.Net的项目属性上设置的模式)。在这种情况下,您正在使用调试器的“编辑并继续”功能,该功能对ASP.net知之甚少。调试器只看到加载的。Net程序集,并且可以在调试器中停止时对其进行修改,因为解决方案中有一个项目声称知道如何构建它。在这种情况下,您将无法修改可能会扰乱调试会话的内容。然而,此方法是在代码运行时更改代码的唯一方法,而不需要刷新浏览器。

        4
  •  1
  •   Jarrett Meyer    16 年前

    您可以对 *.aspx 文件运行时,您可以在web实例上点击刷新,立即查看这些更改。但是,您无法对 *.cs/*.vb *.designer.cs/*.designer.vb 程序运行时的文件。

        5
  •  1
  •   Rob    15 年前

    我在Visual Studio 2008 WAP(Web应用程序项目)上搜索了这个问题,花了两天时间才找到解决方案,所以我希望它能帮助别人:

    有两个位置必须检查,一个在工具选项调试下编辑并继续启用编辑并继续,另一个是右键单击项目属性Web启用编辑并持续

        6
  •  0
  •   Community CDub    8 年前

    郑重声明,我在VS 2008上也遇到了类似的问题,而另一种解决方案为我解决了这个问题。 Editing code in Visual Studio 2008 in debug mode

        7
  •  -1
  •   abc    15 年前

    检查您是否未处于释放模式。 在发布模式下,调试时无法编辑代码。只需将模式更改为调试