我正在阅读wrox目前的专业Asp.net,有一件事我的注意力。作者说,每次网站请求后,如果特定网站尚未编译,asp.net引擎正在运行编译。之后,我们的应用程序中的这个特定网站不会在每次下一个请求时重新编译 - 只是在第一个请求期间。但这对我来说真的没有意义,因为在我们用aspnet_compiler编译我们的网站之后,输出只包含我们应用程序中所有页面的单个dll。所以我的问题是 - 在使用aspnet_compiler预编译的应用程序与在应用程序中对特定页面的第一次请求期间即时编译的应用程序之间的编译文件结构中是否有任何不同之处。
答案 0 :(得分:1)
我的理解是,当您在可视工作室中构建网站时,生成的dll来自您的.cs文件(或.vb,具体取决于您使用的语言)。任何可能包含服务器端代码和html(例如.aspx或.ascx)的文件都不会在此时编译,而是在用户第一次点击它们而不是任何.cs文件时编译。请参阅here阅读动态编译部分。
虽然项目中的代码文件是使用MSBuild预编译到单个程序集中的,但Web应用程序项目的ASP.NET网页(.aspx)和用户控件(.ascx)是由ASP在服务器上动态编译的。 NET编译器1
答案 1 :(得分:0)
你的问题有点模糊。有什么区别吗?你指的是什么样的差异?结构体?这个结构是什么意思?
aspnet_compiler执行典型配置中运行时发生的事情,但它在编译时而不是运行时执行。它产生的代码与最终运行的代码基本相同。
但是,仍然需要进行编译。 asp.net_compiler,就像cs或vb编译器一样,只编译为字节码。字节代码仍必须在运行时编译为本机代码,除非您在安装时使用它。