Asp.net 调试时编辑源代码

Asp.net 调试时编辑源代码,asp.net,debugging,Asp.net,Debugging,我有VS2005,目前正在尝试调试ASP.net web应用程序。我想更改代码隐藏文件中的一些代码,但每次我在断点处停止并尝试编辑某些内容时,都会收到以下错误消息:“当调试器已附加到已运行的进程或正在调试的代码已优化时,不允许更改。” 我很确定我已经启用了所有的“编辑并继续”选项。有什么建议吗?应用程序实际上运行的是您代码的编译版本。如果您修改它,它将不得不重新编译它以使您的更改生效,这意味着它需要将正在运行的版本替换为新的编译版本。这是一个相当困难的问题,这就是为什么我认为微软已经使它不可能做

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


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

应用程序实际上运行的是您代码的编译版本。如果您修改它,它将不得不重新编译它以使您的更改生效,这意味着它需要将正在运行的版本替换为新的编译版本。这是一个相当困难的问题,这就是为什么我认为微软已经使它不可能做到的原因。它更能防止您认为某些更改是在实际情况并非如此的情况下进行的。

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

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

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

在2008年,关闭“编辑并继续”,您可以在其运行时进行编辑(但这些更改不适用)


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

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

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


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

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

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


必须检查两个位置,一个在“工具选项”“调试”“编辑并继续”“启用编辑并继续”下,另一个在“项目属性”“Web”“启用编辑并继续”上单击鼠标右键。请记录,我在VS 2008中遇到了类似的问题,而另一个解决方案为我解决了该问题

太好了,设置“在web项目上启用并继续”选项卡解决了我的问题。谢谢Rob。我总是忘了第二名。>这更能保护你,使你不会认为某些改变是在实际上并非如此的情况下做出的。这可以通过显示一条消息来避免,该消息显示的源代码与编译的源代码不同。我似乎记得VS曾经做过这件事,其他产品也做过这件事。