调试时编辑源代码

时间:2020-03-05 18:57:01  来源:igfitidea点击:

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

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

解决方案

回答

该应用程序实际上是在代码的编译版本上运行的。如果修改它,则必须重新编译它才能使更改生效,这意味着它将需要将运行版本换成新的编译版本。这是一个非常棘手的问题,这就是为什么我认为微软使它不可能做。这样做可以更好地保护我们,使我们免于真正不进行的更改。

回答

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

回答

这似乎违反直觉,但是请关闭编辑并继续。

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

在2008年,请关闭"编辑"并继续,然后我们就可以在其运行时进行编辑(但未应用这些更改。)

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

回答

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

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

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

回答

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

回答

我在Visual Studio 2008 WAP(Web应用程序项目)上搜索了此文件,花了两天的时间找到了解决方案,因此希望它能对其他人有所帮助:

有两个位置需要检查,一个位于工具-options-debugging-Edit和Continue-启用编辑并继续下,另一个是右键单击project-properties-Web-Enable编辑并继续

回答

记录下来,我在VS 2008中遇到了类似的问题,而另一个解决方案为我解决了该问题。在Visual Studio 2008中以调试模式编辑代码