本来下写篇总结,但感觉自己语言不知道怎么组织。就算了。
aspnet_compiler的问题:
一开始
aspnet_compiler -v \ -p F: E: -fixednames
error ASPRUNTIME: 目标目录不是空的。请手动删除该目录,或选择其他目标目录。
aspnet_compiler -v \ -f -p F: E: -fixednames
error ASPRUNTIME: 目标目录非空。并且似乎包含以前编译的应用程序。请手动删除该目录,或选择其他目标目录。
换别的目录
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\web.config(132): error AS PCONFIG: 未能加载类型“System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider”。
算了,单纯命令行准备放弃治疗,后来发现VS2013在发布里面其实有预编译选项的,注意看ms build输出窗格的信息就知道VS怎么预编译了。后来想上面这个问题可能是我用了64位的aspnet_compiler有问题。我后来照着VS打是没问题的。
MVC动态View编译:
ASP.NET MVC以目录为单位的动态View编译,编译生成的程序集临时存放在ASP.NET的临时目录“%WinDir%\Microsoft.NET\Framework\{Version No}\Temporary ASP.NET Files\”下。比如我的就在
C:\Users\ABC\AppData\Local\Temp\Temporary ASP.NET Files.程序寄宿在IIS的话是在这个目录里的root里生成那类文件。VS的iis express则是vs子目录。
webform动态编译:
无
总结
按微软的说法,预编译最终用户可以避免第一次请求应用程序而导致的延迟。但实际上我体会不到。第一次请求依旧那么慢,而且后续的请求还是会编译缺失的view(也许是我之前弄错了?)我试过用RazorGenerator,但是失败了,结局没有实现其官方文档实现的效果。收获还是有的,我发现VS每改一遍代码然后生成,上文提到的临时目录里的profileoptimization.prof就会更新一遍,而第一次请求的时候,这个临时目录就会清空然后重新生成一遍。
我想最后最优解应该是增量编译吧。
参考链接:
DUDU:
http://www.cnblogs.com/dudu/archive/2011/02/07/aspnet_compiler_precompilation.html
MSDN:
http://msdn.microsoft.com/zh-cn/library/ms229863(v=vs.100).aspx
MVC
http://www.cnblogs.com/artech/archive/2012/09/04/razor-view-engine-01.html
ASP.NET
http://www.cnblogs.com/artech/archive/2007/05/26/760292.html
http://www.cnblogs.com/mqingqing123/archive/2006/03/06/343623.html
VS2012预编译选项(注意VS2013会有不同):
http://www.cnblogs.com/Ivony/archive/2011/10/26/2224696.html
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319