在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目录Asp.net 发布分为:动态编译和预编译。预编译又分为:In Place Pre-compilation 和 Pre-compilation for Deployment。关于asp.net编译,推荐Artech写的: 深入剖析ASP.NET的编译原理之一:动态编译(Dynamical Compilation) 深入剖析ASP.NET的编译原理之二:预编译(Precompilation) 本文讲述的编译都是预编译中Pre-compilation for Deployment的Updatable Pre-compilation。如图所示:
开始来到新公司的这段时间,经常听到同事们抱怨:只是改了几个页面,每次都要将整个网站发布一遍,然后从上百个文件中仔细的挑选自己改的那几个页面。 仔细想想,以前开发的网站都是客户定制的,网站一交付,基本就不会再修修改改了,或者根本就不发布网站,直接把源码放到IIS中,故不会频繁发布网站。 来到新公司之后,开发的是公司自己的在线产品,经常需要对网站升级、修改,因而需频繁的发布网站。 对需要频繁发布网站的团队来说,vs自带的发布网站工具,带来的痛苦有: a、每次需整个发布一遍,特别耗时间。页面越多,预编译就越慢。 b、需要仔细挑出自己修改过的aspx页面和bin下对应的dll文件。同样是:页面越多,越不容易找到,特别是dll。
听说博客园博客程序中.aspx和.ascx文件总共加起来有3000多个,使用fixednames编译需要30分钟,呵呵~~ 那怎么办呢? 以下提供两种解决方法: 文件放到单独的类库项目将所有的aspx.cs文件集中放到同一类库项目下,意味着你揽了ASP.NET预编译的活。也就是说预编译给每个页面生成的代码,你需要自己手写。 先来对比一下正常发布,页面文件内容的变化: Web.config设置:
Default.aspx:
发布前:
发布后:
Default.aspx.cs:
发布前:
发布后(用.Net Reflector打开bin目录下对应的dll):
由此可见,预编译做的工作:
Demo:
总结 优点:
缺点:
LimusicAddinaspx.cs文件放到单独的类库项目其实是一种变通的方法,本质上并没有解决vs自带的发布网站工具每次都要预编译整个网站的缺陷。那只能自己开发个插件了。 详细介绍: 可发布指定的ASP.NET页面的插件:LimusicAddin
|
请发表评论