0

我能够测试是否正在构建应用程序的唯一方法aspnet_compiler是使用以下内容:

HttpRuntime.AppDomainAppId.EndsWith("_precompile")

然而,这感觉就像一个黑客。我可以检查元数据库路径,但是可以通过切换到可执行文件轻松更改。是否有更强大的记录方法来确定这一点?

4

1 回答 1

0

这是我想出的(尽管它仍然很脏)。如果提供了更好的答案,我将其更改为接受的答案。

public static bool IsPerformingPrecompilation()
{
    var simpleApplicationHost = Assembly.GetAssembly(typeof(HostingEnvironment))
                                    .GetType("System.Web.Hosting.SimpleApplicationHost", throwOnError: true, ignoreCase: true);

    return HostingEnvironment.InClientBuildManager && 
           HostingEnvironment.ApplicationID.EndsWith("_precompile", StringComparison.InvariantCultureIgnoreCase) && 
           HostingEnvironment.ApplicationHost.GetType() == simpleApplicationHost;
}
于 2012-05-17T23:07:48.840 回答