【问题标题】:Is it possible to deploy an uncompiled ASP.NET Razor Pages website?是否可以部署未编译的 ASP.NET Razor Pages 网站?
【发布时间】:2020-04-04 08:35:27
【问题描述】:

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

类似于在 ASP.NET Web 窗体网站上上传源代码(*.aspx 和 *.aspx.cs 文件)并在运行时编译它们可以做什么?

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

这可能吗?有任何指导或链接吗?

PS。我确定这不是一个好习惯,但仍然希望得到答案...谢谢。

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    这可能吗?有任何指导或链接吗?

    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 视图:

    【讨论】:

    • 感谢您的回答。我试了一下,但遇到了一些问题,可能是因为我的主机只支持 3.0。我会继续尝试。
    • @johna 我相信这不是真的,因为我只是使用 ASP.NET Core 3.0.100 创建项目并发现它对我来说很好用。那么您能否向我们展示一下您是如何部署该应用程序的?部署时是否在发布文件夹中看到了Pages/ 文件夹?还是您在 VS 中启动网站?
    • 我对 csproj 和 startup.cs 进行了更改并发布到一个文件夹。然后它确实包含了 Pages 文件夹,我通过 FTP 复制了所有内容,但我收到一个错误,说明与错误版本有关。我一直想在有空的时候再试一次,所以我会从一个新的干净项目开始,然后再试一次,然后把结果发回来。
    • “与错误版本有关”:该错误消息是什么?我最好的猜测你应该使用&lt;PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.0.*" /&gt; 而不是3.1.*
    • 这次我用默认页面创建了一个新的 3.0 项目,并对 .csproj 和 startup.cs 进行了更改,并通过 Nuget 添加了运行时编译。有效!谢谢你。我看到只能编辑 .cshtml 文件,而不能编辑 .cs 文件……我想也没有办法让它们在运行时编译?
    猜你喜欢
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多