【问题标题】:Precompile ASP.NET MVC views on Azure Web App在 Azure Web App 上预编译 ASP.NET MVC 视图
【发布时间】:2016-05-12 17:12:35
【问题描述】:

有没有办法在 Azure Web 应用程序上预编译 ASP.NET MVC 视图(特别是在通过 VSTS 上的发布管理发布时)?

一旦每个视图都被点击一次,页面随后会非常快速地呈现。但是第一次延迟对用户来说可能是个麻烦事,而且没有办法编写触摸每个页面的脚本。

我不确定是否需要在 VSTS 上的构建/发布过程中更改某些内容(我正在使用 Visual Studio Build 构建步骤和 Azure Web App 发布任务),或者我是否需要在 Azure 上运行某些内容发布后的 Web App 实例(或其他任何东西)。

似乎找到某种方式在发布后调用aspnet_compiler 可能是我需要的(并且我已经在云服务上的 Web 角色中看到了这一点),但我无法让它发挥作用。

打电话

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler -v "/" -p "d:\home\site\wwwroot" 

通过 Azure 门户中的控制台执行得很好(如果有错误,会发现错误),但对启动时间没有任何影响 - 第一次点击视图仍然需要很长时间。

所以也许这不是正确的方向。

我查看了 RazorGenerator(包括 .MSBuild nuget 包),但我无法完全让它工作,但我真的很犹豫对项目进行如此多的更改,只是为了在发布时进行预编译。

另外请注意,我目前在 VSTS 中使用的是 TFVC,而不是 Git,因此据我所知,我无法使用 Kudu/Git 集成(根据某些文章,这似乎触发了预编译)。

其他想法?

【问题讨论】:

  • 我想知道在您的发布任务之后在网站上运行基于云的 Web 性能测试是否会对您的视图造成第一次缓慢打击?

标签: asp.net asp.net-mvc azure azure-devops release-management


【解决方案1】:

您可以在“Visual Studio Build”步骤中添加“/p:PrecompileBeforePublish=true”参数:

然后任务会在构建过程中调用 aspnet_compiler 并生成预编译输出用于部署。

【讨论】:

  • 通过msdeploy.exe调用直接发布Azure App Service时是否可以使用PrecompileBeforePublish参数?
  • 有趣。有人告诉我那行不通。但它显然是。嗯,真棒。谢谢!
  • 这将为每个视图创建一个 dll。如果您还将 /p:UseMerge=true /p:SingleAssemblyName=AppCode 添加到参数中,您将只有一个 dll,加载速度更快。
  • 我正在尝试,但在 Azure DevOps 中出现以下错误:##[error]Project\obj\release\aspnetcompilemerge\source\web.config(52,0): Error ASPCONFIG : 在应用程序级别之外使用注册为 allowDefinition='MachineToApplication' 的部分是错误的。此错误可能是由于虚拟目录未在 IIS 中配置为应用程序所致。
  • @Albert 嗨,你是怎么解决这个问题的?我遇到了和你一样的问题。
【解决方案2】:

在 Visual Studio 2013+ 中,选择 Build->Profiles。选择配置文件,然后选择“设置”。在“配置”下,展开“文件发布选项”,然后选中“发布期间预编译”选项。

【讨论】:

  • 另外不要忘记取消勾选“允许预编译站点可更新”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 2017-07-22
  • 2010-09-27
  • 1970-01-01
相关资源
最近更新 更多