我的理解是asp.net页面分组在文件夹中,每个文件夹都编译成一个dll文件。但是,当第一次请求页面时,只编译该页面?那么有可能编译一部分dll文件吗?当请求页面时,是否只执行dll文件中的页面代码,而不是整个dll?不知何故,我认为应该编译或执行一个dll文件。
答案 0 :(得分:2)
您的答案存在于ASP.NET Compilation Overview和compilation element。
中目录在浏览时编译,但如果只编译加载的页面,或者该目录中的所有页面,则batch = true / false配置。 (有一个maxBatchSize可以配置批量编译的最大页面。)
答案 1 :(得分:2)
页面可以编译每个文件夹。编译器编译在未编译的文件夹上找到的前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文件的一部分是否可能? 意味着您要编译项目的特定部分。