.NET本身是否支持提前编译?我看到Mono这样做是为了避免在其他平台(例如IPhone)上出现JITing问题,并且想知道是否有可能将dll构建到本机代码并在IIS中运行它们。对于dev,我真的希望能够在VS和IIS上翻转一个开关,所以我只需要等待一次编译而不是编译等待,JIT等待。
答案 0 :(得分:2)
Web Deployment Projects可以运行前面提到的预编译器(aspnet_compiler.exe)作为构建的一部分。
预编译器负责解析.aspx,.ascx,.master文件并将解析器生成的代码编译成程序集。当站点执行时,这些程序集仍然需要JITed。从理论上讲,这是NGen可能有用的地方,但我从未将它用于服务器端代码(根据经验,JITing对于长时间运行的应用程序更好)。
答案 1 :(得分:1)
关于你可能会到达的最近的地方是使用ASP.NET compilation tool。你也可以看看NGEN。
答案 2 :(得分:1)
您可以预编译为IL,但不能预编译本机代码; NGEN与网站不兼容,因为它们被加载到IIS中。
除了可以将整个站点合并到一个DLL中的Web部署项目之外,您还可以使用“Web应用程序”项目,该项目使用客户端编译,而不是“网站”项目,这是服务器端编译。
答案 3 :(得分:0)
查看-u选项:
-u
来自http://msdn.microsoft.com/en-us/library/ms229863%28VS.80%29.aspx:
“指定Aspnet_compiler.exe应创建一个预编译的应用程序,允许后续更新.aspx页面等内容。
如果省略此选项,则生成的应用程序仅包含已编译的文件,并且无法在部署服务器上更新。您只能通过更改源标记文件并重新编译来更新应用程序。“
答案 4 :(得分:0)
请注意,使用ngen为给定计算机指令集(运行应用程序的指令集)的特定版本框架构建应用程序的本机代码版本。安装新版本的框架或更改硬件意味着您需要重新生成本机版本。