代码之家  ›  专栏  ›  技术社区  ›  Kye

ASP.net中何时使用<Compilation>

  •  2
  • Kye  · 技术社区  · 14 年前

    在applications web.config中设置ExecutionTimeout元素时遇到一些问题。

    编译设置是指IIS/ASP.net在客户端请求时编译ASPX页,还是指创建程序集时的visual studio编译过程。

    在visualstudio中使用debug生成的程序集是否仍然允许上述设置工作?

    3 回复  |  直到 14 年前
        1
  •  2
  •   Tommy    14 年前

    IIS不会在人们请求时编译aspx页。如果在VS中有一个“web应用程序项目”,则在部署之前编译所有代码和其他类文件。如果你在VS中有一个“网站项目”,那么web服务器只在第一次请求时编译你的应用程序。在上述任何一种情况发生之后,应用程序都不会再次编译,直到您做出更改。

    考虑到上述信息,此时编译debug=true | false开始起作用。当debug=true时,你会得到一些关于错误和其他事件的详细信息,但是当调试符号插入到.dll中时,它会使你的应用程序运行得更慢,而且总的来说,它没有针对性能进行优化。通过设置debug=false,您不会得到完全相同级别的错误报告,但您确实获得了性能提升。

        2
  •  1
  •   terR0Q    14 年前

    说到 debug 属性,这是 good article

    关于编译本身。

    有3种编译模式。它们在 MSDN Overview

    默认情况下,web应用程序使用可更新的预编译:all .cs

    默认情况下,网站项目使用就地编译。

    必须显式指定不可更新的完全预编译。什么时候在这里 compilation batch="true" 然后应用程序中的所有页面将在第一次请求时编译到任何页面。这让我们想到了另一个关于大型应用程序的故事:)

    ASP.NET Precompilation Overview 如果你真的需要这个。

        3
  •  0
  •   to StackOverflow    14 年前

    IIS在第一次被请求时编译ASPX页(以及ASCXUserControls、ASHX、ASMX…)。它还动态编译:

    • 网站项目页旁代码中的代码

    如果您在visualstudio中使用Web应用程序项目,您的ASPX页面将有一个代码隐藏文件。当项目在VisualStudio中生成时,它被编译到一个DLL中,并且不受web.config编译元素的影响。