Razor 页面的运行时编译不起作用 .NET 8 VS2022

问题描述 投票:0回答:1

我很难使用 Visual Studio 2022 17.8.8、.NET 8.0.103 (Windows 11) 在 IIS v10.0 下启用 Razor 页面的运行时编译。

我已按照 https://learn.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-8.0&tabs=visual-studio 的说明进行操作,并添加了所需的 nuget包

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation
(v8.03)。按照说明配置服务,但我不将运行时编译仅限于开发环境。我希望它在已发布的站点中处于活动状态(是的,我知道我在做什么,我意识到潜在的性能问题等)

将站点发布到本地 IIS 上的目录后,它本身可以工作,但运行时编译则不能工作。发布时没有复制任何 .cshtml 页面,因此无需进行任何修改。

好的,所以我尝试将解决方案资源管理器中的“复制到输出目录”设置更改为“始终复制”。然后,它们在发布时被复制,但是惰性的 - 更改其内容对浏览器中的应用程序没有影响。显然,这些页面在发布时仍然被编译成静态程序集。

我查看了以前的一些答案,例如:

Razor Page Runtime Compilation not work

(有关

RazorCompileOnPublish设置的接受解决方案不起作用)和这个 .NET 6 MVC 启用 razor 运行时编译会破坏program.cs

(不同的、不相关的问题),他们的建议对我没有帮助。
我还征询了克劳德(AI)的意见,它提出了一些建议,但都不起作用。我需要一些人类智慧来帮助我。

我应该提到的是,我想我记得以前用过以前版本的 .NET Core 和 VS 做过这件事,而且我不记得这有多痛苦。这应该很简单:与 MVC 不同,Razor 页面大概是动态的且易于设置。

<rant>

我需要一个运行时编译的、本质上是脚本的解决方案来创建动态网站。随着每次工具链的更新,这变得越来越困难。经典 ASP 有人吗?如果它不是可怕的 VBScript,我仍然会使用它,但此时,我希望有一些最新和现代的东西。

</rant>


    

你可以按照我的步骤来。
c# .net asp.net-core razor razor-pages
1个回答
0
投票
1.参考

Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation (v8.03)

,复制cshtml文件。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.3" />
  </ItemGroup>

    <ItemGroup>
        <PageFiles Include="$(ProjectDir)\Pages\**\*.cshtml" />
    </ItemGroup>

    <!-- Copy .cshtml files from Pages folder after publishing -->
    <Target Name="CopyPageFilesAfterPublish" AfterTargets="Publish">
        <Copy SourceFiles="@(PageFiles)"
          DestinationFolder="$(PublishDir)\Pages\%(RecursiveDir)"
    />
    </Target>

</Project>

2.添加服务
builder.Services.AddRazorPages().AddRazorRuntimeCompilation();

3.测试
已复制文件

动态页面

© www.soinside.com 2019 - 2024. All rights reserved.