是每页还是每个文件夹编译asp.net页面?

时间:2010-09-13 05:22:17

标签: asp.net

我的理解是asp.net页面分组在文件夹中,每个文件夹都编译成一个dll文件。但是,当第一次请求页面时,只编译该页面?那么有可能编译一部分dll文件吗?当请求页面时,是否只执行dll文件中的页面代码,而不是整个dll?不知何故,我认为应该编译或执行一个dll文件。

3 个答案:

答案 0 :(得分:2)

您的答案存在于ASP.NET Compilation Overviewcompilation element

目录在浏览时编译,但如果只编译加载的页面,或者该目录中的所有页面,则batch = true / false配置。 (有一个maxBatchSize可以配置批量编译的最大页面。)

答案 1 :(得分:2)

如果您启用 batch = true

页面可以编译每个文件夹。编译器编译在未编译的文件夹上找到的前n页。

还会编译您运行的页面所需的所有模块。当再次找到另一个尚未编译的页面时,再次编译第二组n个文件。

使用batch = true编译的文件数量的限制是从compilation settings 设置的。

如果我理解得很好,你会找到一种方法来推动发展。

对于您的开发计算机,我建议2个设置。

<compilation batch="false"  optimizeCompilations="true" ... >

当batch = false时,只调用您提出的文件。当optimizeCompilations = true时,编译器不会在dll上构建函数,如果它们没有更改,则会删除一些缓存文件。

另请阅读:Slow Performance -- ASP .NET ASPNET_WP.EXE and CSC.EXE Running After Clicking Redirect Link

如果您对编辑有问题,请设置optimizeCompilations = false。

当启用optimizeCompilations时,有时编译无法理解函数的更改并且您会收到错误。一种情况是你有一个函数调用,并通过添加一个默认值(net4)的参数来更改函数。在这种情况下,编译器没有再次编译它,这有时会产生产品错误。

答案 2 :(得分:0)

但是,第一次请求页面时,只编译该页面?

如果您的应用程序是一个网站,当它第一次调用aspx页面时会自动编译。但是对于Web应用程序,它将在您构建时编译一次

那么编译dll文件的一部分是否可能?   意味着您要编译项目的特定部分。