You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ASP.NET Core 5.0中禁用MVC .cshtml页面发布时预编译

解决ASP.NET Core 5.0 MVC发布时关闭cshtml预编译的方案

配置失效的核心原因是MvcRazorCompileOnPublish是ASP.NET Core 2.x版本的旧属性,3.0及以上版本已被RazorCompileOnPublish替代,旧属性不会生效,按以下步骤调整即可:

第一步:修正项目文件(.csproj)配置

替换原有PropertyGroup的相关配置如下:

<PropertyGroup>
  <TargetFramework>net5.0</TargetFramework>
  <!-- 关闭发布时的Razor预编译 -->
  <RazorCompileOnPublish>false</RazorCompileOnPublish>
  <!-- 保留编译上下文供运行时编译使用 -->
  <PreserveCompilationContext>true</PreserveCompilationContext>
  <!-- 将cshtml源文件复制到发布目录 -->
  <CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>
</PropertyGroup>

<ItemGroup>
  <!-- 保持运行时编译包引用,建议使用5.0大版本下的最新补丁版避免兼容问题 -->
  <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.17" />
</ItemGroup>

第二步:调整Startup.cs配置(可选优化)

如果需要适配不同环境的运行时编译规则,可以参考以下写法,原有全局开启的写法也可正常使用:

public void ConfigureServices(IServiceCollection services)
{
    var mvcBuilder = services.AddControllersWithViews();
    // 可根据实际需求调整启用运行时编译的环境
    mvcBuilder.AddRazorRuntimeCompilation();
}

第三步:验证发布结果

发布后检查输出目录:

  • 不会生成[项目名].Views.dll这类视图预编译程序集
  • Views目录下会保留所有原始.cshtml文件,修改发布目录下的cshtml文件刷新页面即可生效,无需重新发布

注意:如果使用命令行执行发布操作,不要额外附加/p:RazorCompileOnPublish=true参数,否则会覆盖项目文件中的配置导致预编译依然生效。

内容的提问来源于stack exchange,提问作者M005

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:18:00