ASP.NET 预编译笔记

  本来下写篇总结,但感觉自己语言不知道怎么组织。就算了。

aspnet_compiler的问题:

一开始

aspnet_compiler -v     -p  F:  E: -fixednames

error ASPRUNTIME: 目标目录不是空的。请手动删除该目录,或选择其他目标目录。

aspnet_compiler -v    -f  -p   F:  E: -fixednames

error ASPRUNTIME: 目标目录非空。并且似乎包含以前编译的应用程序。请手动删除该目录,或选择其他目标目录。

换别的目录

C:WindowsMicrosoft.NETFramework64v4.0.30319Configweb.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.NETFramework{Version No}Temporary ASP.NET Files”下。比如我的就在

C:UsersABCAppDataLocalTempTemporary 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:WindowsMicrosoft.NETFrameworkv4.0.30319

原文地址:https://www.cnblogs.com/zeusro/p/4028945.html