1

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

类似于您可以对上传源代码(*.aspx 和 *.aspx.cs 文件)并在运行时编译的 ASP.NET Web 窗体网站执行的操作?

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

这是否可能以及有关如何操作的任何指导或链接?

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

4

1 回答 1

3

这是否可能以及有关如何操作的任何指导或链接?

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文件中发布目录:

    <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动态改变视图:

在此处输入图像描述

于 2019-12-11T10:42:28.073 回答