调试时编辑源代码

时间:2008-09-16 20:04:54

标签: asp.net debugging

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

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

7 个答案:

答案 0 :(得分:17)

这可能看似违反直觉,但转而编辑并继续关闭。

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

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

如果您确实想要使用编辑并继续,则还必须在项目设置的Web选项卡上为项目启用它。

答案 1 :(得分:6)

应用程序实际上正在运行代码的编译版本。如果你修改它,它将不得不重新编译它,以便你的更改工作,这意味着它将需要换掉新编译版本的运行版本。这是一个非常难的问题 - 这就是为什么我认为微软已经无法做到这一点。更重要的是要保护你不要思考当他们真的没有做出一些改变时。

答案 2 :(得分:2)

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

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

有两个位置需要检查,一个位于工具 - 选项 - 调试 - 编辑并继续 - 启用编辑并继续,另一个是右键单击项目属性 - 网络启用编辑并继续

答案 5 :(得分:0)

为了记录,我在VS 2008中遇到了类似的问题,另一个解决方案为我解决了这个问题。 Editing code in Visual Studio 2008 in debug mode

答案 6 :(得分:-1)

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

即可