注意:发布(publish)命令并不会改变web.config中的debug设置.发布命令总是编译一个release版本.然后,如果你想预编译一个可更新(updateable)站点,以后可以在适当的时候更新站点(这将会导致动态编译),这样的动态编译将会产生debug代码和pdb文件.
新的Web站点部署工程稍微改变了上面所说的场景.WSD在Visual Studio 2005的配置管理器(configuration manager)中添加了Release和Debug的配置.但是这并不意味着Visual Studio知道如何编译web站点.而是,Visual Studio知道如何使用WSD提供的MSBuild文件构建Debug或者Release版本.你现在可以在配置管理器中选择Debug或者Release.这种请求最终还是要交给aspnet_complier执行的,发布命令也是这样的.
和发布命令不同的是,一个WSD的Release构建会改变web.config中的debug设置为false.而且WSD会默认把release构建放到release目录中,把debug构建放到debug目录中,这对于使用.net开发非web form程序的人来说是很熟悉的.
装上Visual Studio 2005 Service Pack 1后就可以创建web应用(web application)了,在VS2005中web应用的编译行为和web站点(web site)又有区别.对于一个web应用工程来说,配置管理器中debug和release两种模式都是可用的,但是不管选择哪种模式,生成的程序集中都会包含一个pdb文件,即使你在web.config中的compilation节的debug设置为false也没有任何作用.选择发布(publish)一个web应用也会带着包含调试符号的pdb文件.那么是不是没有办法发布不带pdb文件的程序集?当然会有办法.在web应用的工程文件属性à生成à高级,你可以看到如下一个对话框:

其中选择none的时候会产生不带pdb文件的程序集.
总结:你可以使用web.config中的debug节的设置控制你要生成Debug版本还是Release版本 (前面这句话对web application不适用).但是你使用发布(publish)命令预编译web站点或者使用web站点部署工具情况除外.WSD会让你选择是生成Debug还是Release版本,然后预编译web站点,并且对应修改web.config的debug设置.
大部分内容翻译自K. Scott Allen博客,自己加了一些web application相关的编译行为.