【问题标题】:aspnet_compiler in Azure starup taskAzure 启动任务中的 aspnet_compiler
【发布时间】:2013-04-09 11:31:10
【问题描述】:

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

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

或者有没有更好的方法来做到这一点?

【问题讨论】:

  • 你的命令是正确的,除了拼写错误,应该是siteroots而不是siteroots。
  • 也应该是aspnet_compiler.exe(而不是aspnet_precompile)

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


【解决方案1】:

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

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

【讨论】:

  • ClientBuildManager.PrecompileApplication 听起来是个不错的方法。从一开始就调用它时,您为 ClientBuildManager 指定了什么构造函数参数?我不太确定我应该如何获得正确的路径。
  • @JWendel:您可以使用Microsoft.Web.Administration.ServerManager,枚举所有Sites,为每个人枚举所有Applications,为每个人枚举所有VirtualDirectories,每个人都有@987654330 @ 和 PhysicalPath - 你可以将这两个传递给 ClientBuildManager 构造函数。
  • 非常感谢!打算试试看。对于寻找 Microsoft.Web.Administration 的其他人,它可以作为 NuGet 包使用 - nuget.org/packages/Microsoft.Web.Administration
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多