加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC – 更新预编译的Razor View文件直播生产

发布时间:2020-12-16 07:05:31 所属栏目:asp.Net 来源:网络整理
导读:我想知道以下是否可行: 通过打开visual studio中的项目设置,使用我们的MVC应用程序预编译Razor视图. 将应用程序部署到生产环境. 然后在稍后阶段,通过覆盖生产中的现有* .cshtml文件来更新视图,而无需回收应用程序池或重新编译项目并重新部署构建. 解决方法
我想知道以下是否可行:

>通过打开visual studio中的项目设置,使用我们的MVC应用程序预编译Razor视图.
>将应用程序部署到生产环境.
>然后在稍后阶段,通过覆盖生产中的现有* .cshtml文件来更新视图,而无需回收应用程序池或重新编译项目并重新部署构建.

解决方法

是的,你可以这样做.视图引擎会将每个目录中的所有文件重新编译为一个单独的DLL,并将其重新编译为这样的文件

C:WindowsMicrosoft.NETFrameworkv4.0.30319Temporary ASP.NET
Filesmicropedi_mvcd3b5b4cdeb219373App_global.asax.ihdiifed.DLL

您可以使用ILSpy或Reflector打开此文件,并确切地查看编译到哪个文件.如果你有很多目录,你会看到生成了几个DLL.

请注意,所有theMvcBuildViews都会运行此post post构建事件,就像您点击应用程序所需的每个文件一样.

<Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
   <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
</Target>

为了获得最佳性能,我建议使用RazorGenerator precompiler.这实际上将cshtml文件嵌入到您的主DLL中,这不是MvcBuildViews所做的.再加上它快得多.

如果要在生产中使用它,则需要将RazorGeneratorMvcStart.cs中的UsePhysicalViewsIfNewer更改为true,以便在更新视图时重新编译.

提示:如果您想要确切地找到编译cshtml文件的DLL,只需将其添加到您的页面即可

<div>This file is compiled to  @this.GetType().Assembly.CodeBase</div>

然后你将获得完整的路径,而不是寻找它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读