在Azure Web App上预编译ASP.NET MVC视图

Tim*_*Tim 18 asp.net asp.net-mvc azure release-management azure-devops

有没有办法在Azure Web App上预编译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" 
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

其他想法?

Edd*_*SFT 26

您可以在"Visual Studio Build"步骤中添加"/ p:PrecompileBeforePublish = true"参数: 在此输入图像描述

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

  • 这将为每个视图创建一个dll.如果还将/ p:UseMerge = true/p:SingleAssemblyName = AppCode添加到参数,则只有一个dll,加载速度更快. (13认同)
  • 当通过`msdeploy.exe`调用直接发布Azure App Service时,是否可以使用`PrecompileBeforePublish`参数? (2认同)