部署 .NET Web 应用程序时如何获得预编译的 razor 文件?

Joh*_*ver 5 iis asp.net-mvc precompile razor

我的任务是改进我们服务器上的 IIS 预加载和应用程序初始化。我已经在IIS上实现了应用程序初始化和应用程序预加载,但是在回收/重新启动应用程序池时仍然有很长的等待时间。我找到了一些我认为对我有帮助的有用链接,但我仍然没有获得预编译的 Razor 视图。我试图按照 RazorGenerator 的这篇文章进行操作,但它似乎不起作用。 http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

我为上述文章采取的步骤

1) 从这里安装 VS 扩展:https : //marketplace.visualstudio.com/items?itemName=DavidEbbo.RazorGenerator

2)安装nuget包RazorGenerator.Mvc

3) 将剃刀视图上的输出更改为“无”,并将“自定义工具”设置为“RazorGenerator”,如上面文章所述。

图片 扩展和更新 - Razor GeneratorNuget 包 - RazorGenerator.Mvc索引.cshtml

我进行了清理和重建,但没有看到我的 cshtml 文件的 .cs 文件。

好的,那么我认为这不起作用,让我们尝试其他方法......让我们尝试一下 Visual Studio 开箱即用的预编译功能,正如这篇文章的答案所暗示的那样:在 asp .net mvc 中预编译 razor 视图5,但仍然没有预编译的 cshtml 文件。

我想要完成的是如何事先生成这些文件,以便 IIS 不必。这是回收/重启后 IIS 临时缓存文件的图像

在此处输入图片说明

这是浏览器请求应用程序后的图像

IIS 编译

最后在发布时,我使用了 Visual Studio 预编译(对于上面的两个图像),所以我也附上了我的发布选项图像。

发布选项

好的...现在我认为这是不可能的,但是然后在这里找到另一个 SO 解决方案:VS2013 不编译 ASP.NET MVC5 视图,但再次发布时,我仍然没有在我的应用程序的临时 IIS 缓存中看到 cshtml 文件的编译版本。是否有任何人都可以建议实际预编译我的应用程序中的 cshtml 文件的可靠解决方案,以便它们不会在第一个浏览器请求时生成?我什至在我的 web 配置中进行了应用程序初始化并安装了所需的 IIS 功能,甚至可以看到它确实向我的应用程序发出了“假”请求,但是 cshtml 文件不会根据该“假”请求进行编译。对不起,如果我附上了很多信息,但似乎我在这里问的每个问题我都没有提供我的实际问题...=(希望这个问题可以达到目的。谢谢!

更新

上面的最后一篇文章建议更改 csproj 文件,因此我也尝试过并附上该文件的屏幕截图。

MVC 构建视图

以及文件底部的 Action

构建动作

将“temp”更改为“/”也无济于事。

更新 2

因此,在周末离开计算机后,我今天早上注意到我选中了“允许预编译的站点可更新”。取消选中该值后,我开始在 bin 文件夹中看到预编译的视图。所以我发布了我的应用程序,认为我最多会等待 5-10 秒来为应用程序提供服务(通常在第一次请求之后它只需要大约 2 秒),但它仍然需要 25-30 秒。这是 IIS 的预期行为吗?