gpt4 book ai didi

c# - Razor 页面运行时编译不起作用

转载 作者:行者123 更新时间:2023-12-03 14:42:07 29 4
gpt4 key购买 nike

我试图让 Razor 运行时编译在 Razor 页面的 MVC Core 3.1 Web 应用程序中工作,但它对我不起作用。令人沮丧的是,因为我在多个版本(2.0、2.1、3.1)中使用了按预期工作的 Controller 和 View ,所以我有几个以前的 MVC Core Web 应用程序。
什么不起作用?
发布项目时,我希望在发布输出中看到一个带有我的 .cshtml 文件的/pages 文件夹。没有,并且发布文件夹中的任何位置都没有 .cshtml 文件。
有什么作用?
该网站运行良好,按预期提供页面,因此页面被编译为 WebApplication3.1.Views.dll正确组装。这里没有问题。
我尝试了什么?
为了重现,我按照 https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-3.1&tabs=visual-studio 中的说明创建了一个新的 MVC 项目,并在创建时启用了 Razor 运行时编译。 .我可以确认Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation.dll已发布的输出中存在程序集,并且 services.AddRazorPages().AddRazorRuntimeCompilation()Startup.ConfigureServices 调用方法。查看文档和几个 StackExchange 答案后,这应该足以启用运行时编译。 .csproj 文件如下所示:

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<RootNamespace>WebApplication3._1</RootNamespace>
<CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.1.4" />
</ItemGroup>
</Project>
然后我添加了 <Target>元素添加到 .csproj 文件以将页面放入发布文件夹,该文件夹有效,但是当我部署和更改 .cshtml 文件时,我得到了一个异常 Microsoft.AspNetCore.Antiforgery.dll找不到。所以我可以看到运行时编译是有效的,但被破坏了。
在这一点上,这似乎比它应该的更复杂,考虑到在我的其他基于 MVC Core 3.1 Controller / View 的项目中它刚刚工作。我错过了一些非常明显的东西吗?
我还查看了其他 StackExchange 问题,特别是这个问题,但它基本上说的是同一件事:
.NET Core 3.0: Razor views don't automatically recompile on change
我使用的是 Visual Studio 2019 专业版 16.6.4

最佳答案

看来您需要 RazorCompileOnPublish属性,您可以在 .csproj 文件中设置:

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<RazorCompileOnPublish>false</RazorCompileOnPublish>
...
</PropertyGroup>

...
</Project>
设置 RazorCompileOnPublishfalse应该是所有需要的,但我怀疑你不需要那个 CopyRefAssembliesToPublishDirectory .csproj 中的属性。

关于c# - Razor 页面运行时编译不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62952025/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com