You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

ASP.NET Core 2.0视图预编译方法及预编译文件缺失问题求助

解决ASP.NET Core 2.0发布后缺失precompiledviews.dll的问题

我之前在多项目的ASP.NET Core 2.0解决方案里也碰到过一模一样的问题,给你几个亲测有效的排查和解决步骤:

  • 确保每个MVC项目的.csproj配置正确
    虽然ASP.NET Core 2.0默认开启视图预编译,但多项目场景下偶尔会出现配置不继承的情况,建议你在两个MVC项目的.csproj文件里都显式添加以下配置:

    <PropertyGroup>
      <!-- 开启发布时编译视图 -->
      <MvcRazorCompileOnPublish>true</MvcRazorCompileOnPublish>
      <!-- 关闭运行时编译,确保依赖预编译的dll -->
      <MvcRazorRuntimeCompilation>false</MvcRazorRuntimeCompilation>
    </PropertyGroup>
    

    保存后重新加载项目。

  • 检查发布配置文件(pubxml)的覆盖设置
    打开项目下Properties/PublishProfiles文件夹里的发布配置文件,查看是否存在<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>这样的配置——如果有的话,会直接覆盖项目级的设置,把它改成true或者删除这个节点即可。

  • 清理缓存后重新发布
    有时候项目的bin/obj缓存会干扰预编译流程,按以下步骤操作:

    1. 右键解决方案,选择「清理解决方案」
    2. 手动删除每个项目下的binobj文件夹
    3. 右键解决方案,选择「重建解决方案」
    4. 重新执行发布操作
  • 查看发布日志排查编译错误
    发布过程中如果某个视图存在语法错误,可能会导致预编译失败、precompiledviews.dll无法生成。你可以在发布时勾选「显示详细日志」,查看日志里是否有视图编译相关的报错,定位具体的问题视图。

  • 确认依赖包完整性
    检查两个MVC项目是否都正确引用了Microsoft.AspNetCore.Mvc.Razor包(版本为2.0.x),如果包缺失或者版本不匹配,也会导致预编译功能无法正常工作。

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

火山引擎 最新活动