Azure starup任务中的aspnet_compiler

时间:2013-04-09 11:31:10

标签: asp.net azure azure-web-roles

有没有人知道是否可以从azure角色启动任务调用aspnet_compiler来强制预编译。 (如果是foregroudn /背景或简单任务?)

也许是这样的: %windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_precompile.exe -v / -p“F:\ siteroot \ 0”

或者有没有更好的方法来实现这个目标?

2 个答案:

答案 0 :(得分:2)

是的,一旦你找到了编译器的正确路径,这应该可行,尽管我还没有尝试过这种特定的方法。

我尝试过的另一种方法是使用in this answer所述的ClientBuildManager.PrecompileApplication。我尝试从OnStart()内部调用它,但您可以将C#代码编译为.NET程序集并使用PowerShell中的代码,或者只是按照here所述从PowerShell调用.NET原语,这样就可以从启动时调用它任务。

答案 1 :(得分:0)

启动任务是可能的,但是一个问题是siteroot路径是硬编码的并且可以改变。而是将以下内容添加到RoleEntryPoint OnStart方法:

 using (var serverManager = new ServerManager())
        {
            string siteName = RoleEnvironment.CurrentRoleInstance.Id + "_" + "Web";
            var siteId = serverManager.Sites[siteName].Id;
            var appVirtualDir = $"/LM/W3SVC/{siteId}/ROOT";  // Do not end this with a trailing /

            var clientBuildManager = new ClientBuildManager(appVirtualDir, null, null,
                                        new ClientBuildManagerParameter
                                        {
                                            PrecompilationFlags = PrecompilationFlags.Default,
                                        });

            clientBuildManager.PrecompileApplication();
        }