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 に答える