代码改变世界

对aspx等页面进行预编译以进行编译期检查

2009-01-08 12:38 Jeffrey Zhao 阅读(...) 评论(...) 编辑 收藏

话说在开发Web应用程序时能够很轻易地对后台代码进行编译,并获得编译时的错误。可惜有时候我们对后台代码进行重构或Find all references的时候都会忽略aspx,ascx和master等文件里的代码,因为它们只有在打开时(执行期)才能发现错误。这是一个非常惹人厌的问题,但是事实上,我们只需要对一个asp.net目录下的文件进行预编译即可发现哪里出现问题。在项目中我经常会准备一个bat脚本:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -v / -p .\WebRoot -f -errorstack .\Temp

当运行这个脚本时,aspnet_compiler命令就会对WebRoot目录进行预编译,并且将error打印出来(具体参数的作用可以查找文档)。需要注意的是,aspnet_compiler编译的目标是文件夹,可能有的编译失败是由一些额外的aspx文件引起的,它们并没有被包含在VS的项目文件中。

事实上,在ASP.NET MVC RC版本中就会包含一个MSBuild任务来检查所有的View,其目的和上面那段脚本的目的较为类似。