3

有谁知道是否可以从 azure 角色启动任务中调用 aspnet_compiler 来强制就地预编译。(如果是作为前景/背景或简单任务?)

可能类似于:%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_precompile.exe -v / -p "F:\siteroot\0"

或者有没有更好的方法来实现这一点?

4

2 回答 2

2

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

我尝试过的另一种方法是按照此答案中ClientBuildManager.PrecompileApplication的说明使用。我尝试从内部调用它,但您可以将 C# 代码编译为 .NET 程序集并从 PowerShell 中使用它,或者只从 PowerShell 中调用 .NET 原语,如此处所述然后从启动任务中调用它。OnStart()

于 2013-04-09T12:48:34.177 回答
0

启动任务是可能的,但其中一个问题是站点根路径是硬编码的,并且可能会发生变化。而是将以下内容添加到 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();
        }
于 2016-09-25T15:19:48.473 回答