你的位置:首页 > ASP.net教程

[ASP.net教程]早安Visual Studio!一次重构之旅,夏洛特烦恼


vs问题描述

我的IDE版本是vs2013,今天新开发了一个功能,是一个接口程序,当F5调试时,出现了莫名的错误,为什么呢?因为vs弹出了下面的一个框,只说是“未将对象引用设置到对象实例“。

点击”确定“或”继续“后,就直接跳到如下黄页了。

尝试解决...

分析代码,上面异常堆栈里提到的”d:\SourceProject\ExamineItem\trunk\IpsosDataSubscriber\IpsosWeb\Handle\HttpHandlerBase.cs:46“的46行,是捕获异常后的一个throw语句。

于是,注释掉try..catch语句,并在主入口方法的第一行加断点, F5开启调试,结果呢? vs的反应还是跟上面的一样。 令人费解的是,错误指向的还是第46行,我都已经注释掉了呀~

继续尝试解决...

其实这种情况,我近几个月倒是出现过几次,也忘记怎么解决的了。 发誓这回解决之后,一定要记录下来。

如下罗列我的解决过程:
● 对要调试的web项目,先清理,再重新生成,依然如故。
● 对整个解决方案,先清理,再重新生成,依然如故。
● 重要的事情做三遍, 清理清理再清理,生成生成再生成,依然如故。
● MD,关掉vs,等几分钟再打开,依然如故。
● 微软呀,,,我也是醉了。 来个釜底抽薪的办法——重启电脑,——依然如故!
● 这是肿么了呀! 难道是我人品的问题?————代码提交,去身边同事电脑上尝试调试。————原来,他那里也是如此。

这的确令人费解,这是老盖留下的bug? ————我向来相信一切都有原因,没有空穴来风似的所谓的”不知道怎么回事就这样了“这样的话。

我跟旁边的另一个同事调侃,这么一聊,他的一个小小的建议指点了我的迷津。他说了什么呢?

“清理命令不行的话,手工把bin里的东西都清掉,然后再调试”。

这么一弄,调试时,终于正常了,出现了下面的我们可以“看懂”的黄页了:

看到这个,一下就知道为什么出错了,原来是我前几天重构代码时,修改了项目的程序集名称和命名空间,而遗漏了对.ashx文件里的标记的修改。

后记

我留意了一下之前清理了项目后bin里后遗留的文件,是重构之前的程序集。 为什么我修改了程序集和命名空间后, 重新生成的bin里会包含这些旧程序集文件呢? 以后有时间再续。