我想知道是否可以将ASP.NET Razor Pages网站的源代码复制到Windows Web服务器并使其运行而无需发布/编译?
类似于ASP.NET Web Forms网站可以在其中上载源代码(* .aspx和* .aspx.cs文件)并在运行时进行编译的网站吗?
我看到了关于Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
的一些信息,但是我不确定这是否是我的追求以及如何使用它。
这可能吗,以及有关如何执行的任何指南或链接?
PS。我敢肯定这不是一个好习惯,但是仍然想得到一个答案...谢谢。
答案 0 :(得分:2)
这可能吗,以及有关如何执行的任何指南或链接?
PS。我敢肯定这不是一个好习惯,但仍然想要一个答案
有一种方法可以部署“未编译的” *.cshtml
。假设您正在使用ASP.NET Core 3.1:
首先,将包引用添加到Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
:
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.*" />
更改您的服务以允许运行时编译:
services.AddRazorPages().AddRazorRuntimeCompilation();
配置自定义任务以复制源代码以在您的 *.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
视图: