是否可以部署未编译的ASP.NET Razor Pages网站?

时间:2019-12-11 05:31:47

标签: asp.net-core razor-pages

我想知道是否可以将ASP.NET Razor Pages网站的源代码复制到Windows Web服务器并使其运行而无需发布/编译?

类似于ASP.NET Web Forms网站可以在其中上载源代码(* .aspx和* .aspx.cs文件)并在运行时进行编译的网站吗?

我看到了关于Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation的一些信息,但是我不确定这是否是我的追求以及如何使用它。

这可能吗,以及有关如何执行的任何指南或链接?

PS。我敢肯定这不是一个好习惯,但是仍然想得到一个答案...谢谢。

1 个答案:

答案 0 :(得分:2)

  

这可能吗,以及有关如何执行的任何指南或链接?

     

PS。我敢肯定这不是一个好习惯,但仍然想要一个答案

有一种方法可以部署“未编译的” *.cshtml。假设您正在使用ASP.NET Core 3.1:

  1. 首先,将包引用添加到Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.*" />
    
  2. 更改您的服务以允许运行时编译:

    services.AddRazorPages().AddRazorRuntimeCompilation();
    
  3. 配置自定义任务以复制源代码以在您的 *.csproj 文件中发布dir:

    <ItemGroup>
        <ViewFiles Include="$(ProjectDir)\Pages\**\*.cshtml" />
    </ItemGroup>
    <Target Name="CopyViewFilesAfterPublish" AfterTargets="Publish">
        <Copy SourceFiles="@(ViewFiles)" 
          DestinationFolder="$(PublishDir)\Pages\%(RecursiveDir)" 
        />
    </Target>
    

演示

我发布了RazorPage WebApp并将其托管在IIS上。然后我们可以动态更改Pages/**/*.cshtml视图:

enter image description here