VS2005引发的“奇特”问题

    “当前不会命中断点。源代码与原始版本不同”,昨天到今天,被VS2005的这个问题弄得很郁闷。该问题的表现形式为:不能正常调试,即使取消“要求源文件与原始版本完全匹配”的选项后(工具->选项->调试->常规),调试也不能正常进行。(系统为Windows XP, VS 2005, aspx页面)

    比如某一行代码为

    string strPath = "/Document/skin.xml";

    根据需要,修改该行代码为

    string strPath = "~/Document/skin.xml";

    此时,调试的时候strPath的值仍为修改前的值,无论如何也不是修改后的值。仿佛有灵异现象,变量的值始终不对!

 

    在网上搜寻了N多解决办法,包括:

    1.重新格式化出问题的源文件,即在VS2005中选择 “编辑”-“高级”-“设置选定内容的格式”;

    2.清理解决方案,再重新生成;

    3.若有警告warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将出问题的文件用notepad打开,然后另存为Unicode编码;(我编译的时候没有警告)

    4.项目生成的(即OBJ文件夹,存着两种版本)与临时生成 (Temporary ASP.NET Files目录下:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)不一致。删除两个目录的文件;

    5.重命名文件!如果是由同一项目中存在多个相同文件名的页面文件及相应CS文件造成“当前不会命中断点。源代码与原始版本不同”错误,可以在VS2005解决方案资源管理器里,右键该文件并重命名成新的文件名;

    6.重新生成解决方案;

    7.检查工程所在路径是不是有中文,有VS不支持中文路径的可能……

    以上所有的方法都试过,“万幸”,没有一个解决了该问题的……

    没办法,只能自己琢磨了。我把该项目先移除,再添加已存在的Web网站(由于先前选择的是IIS站点,这次选择文件系统)。重新编译后问题问题依旧。把该文件删除(default.aspx.cs),再添加一个新的页面,名字相同,把代码复制粘贴到新的页面。这次终于能够正常调试了,变量的值没有再出现问题……

    一个小问题引发了我很多感慨,有时候写程序的时候,并不是程序本身的问题,像这样的非程序的问题层出不穷(当然,这也是程序的问题)。希望今后少遇到这样“神奇”的事情,不过问题最终解决了,还是比较欣慰的,写此文以方便后者!

posted on 2009-03-12 01:27  strawberryww  阅读(576)  评论(0编辑  收藏  举报