gpt4 book ai didi

ASP.NET MVC - 在生产中更新预编译的 Razor View 文件

转载 作者:行者123 更新时间:2023-12-04 11:17:30 24 4
gpt4 key购买 nike

我想知道以下是否可能:

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

    是的,你可以这样做。 View 引擎会将每个目录下的所有文件重新编译成一个单独的DLL成这样的文件

    C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\micropedi_mvc\d3b5b4cd\eb219373\App_global.asax.ihdiifed.DLL



    您可以使用 ILSpyReflector打开这个文件,看看到底有哪些文件被编译成它。如果你有很多目录,你会看到生成了几个 DLL。
    Note that all that MvcBuildViews 的作用是运行这个构建后事件,它的作用就像你要点击应用程序所需的每个文件一样。
    <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" />
    </Target>

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

    如果您想在生产中使用它,您需要更改 UsePhysicalViewsIfNewerRazorGeneratorMvcStart.cs为 true,以便在您更新 View 时重新编译。

    提示:如果您想确切地找到编译 cshtml 文件的 DLL 以将其添加到您的页面
     <div>This file is compiled to  @this.GetType().Assembly.CodeBase</div> 

    然后,您无需查找即可获得完整路径。

    关于ASP.NET MVC - 在生产中更新预编译的 Razor View 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15352905/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com