跟踪ASP.NET网站项目的动态重新编译

时间:2015-03-30 23:06:41

标签: asp.net dynamic web-site-project recompile

为了评估性能指标,我想统计一下asp.net网站项目编译成MSIL代码的频率。正如本文When does an ASP.NET Website project recompile?中所述,有几件事可以触发重新编译。

我对应用程序池重启不感兴趣,除非它们导致重新编译。

一种可能是监视临时文件夹以进行编译。如果我删除%FrameworkInstallLocation%\ Temporary ASP.NET Files的内容,我可以看到当我访问网站时,从运行时编译创建了新的带时间戳的文件。但是,我不了解子目录的布局。

跟踪,记录或以其他方式检测ASP.NET网站项目何时执行自动动态重新编译有哪些可能性?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义IAssemblyPostProcessor并使用web.config的编译部分的assemblyPostProcessorType属性进行注册。

示例:

public class LoggingPostProcessor : IAssemblyPostProcessor
{
    public void PostProcessAssembly(String path)
    {
        Trace.Write(String.Format("Processing assembly : {0}", path));
    }

    public void Dispose()
    { }
}

并在web.config中注册,如下所示:

<system.web>
    <!-- ... -->
    <compilation debug="true" targetFramework="4.5" 
                 assemblyPostProcessorType="ns.LoggingPostProcessor, assemblyName" />
</system.web>

但ASP.net不会将应用程序编译成单个程序集,每次ASP.net编译程序集时都会调用IAssemblyPostProcessor

如果您只想拦截某些资源的编译,可以创建自定义BuildProvider,但可能需要更多工作。