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缓存会干扰预编译流程,按以下步骤操作:- 右键解决方案,选择「清理解决方案」
- 手动删除每个项目下的
bin和obj文件夹 - 右键解决方案,选择「重建解决方案」
- 重新执行发布操作
查看发布日志排查编译错误
发布过程中如果某个视图存在语法错误,可能会导致预编译失败、precompiledviews.dll无法生成。你可以在发布时勾选「显示详细日志」,查看日志里是否有视图编译相关的报错,定位具体的问题视图。确认依赖包完整性
检查两个MVC项目是否都正确引用了Microsoft.AspNetCore.Mvc.Razor包(版本为2.0.x),如果包缺失或者版本不匹配,也会导致预编译功能无法正常工作。
内容的提问来源于stack exchange,提问作者Orvel




