最新版本号[免费下载]

ASP.NET Core - 预编译视图改为运行时编译,即(解决 ASP.Net Core 视图文件会编译成DLL的问题)

作者: 发布时间:2022-04-27 来源:本站原创 点击数:

ASP.Net Core 2.0 默认会将项目中的所有视图文件编译成一个DLL文件,后面每次对视图文件进行修改还得编译发布成DLL再更新,比较麻烦。要和ASP.NET MVC一样直接发布VIEW文件,需要修改WEB项目工程文件(.csproj)加入一句话:<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>

.csproj 示例

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="logfile\**" />
    <Content Remove="logfile\**" />
    <EmbeddedResource Remove="logfile\**" />
    <None Remove="logfile\**" />
  </ItemGroup>
</Project>

思路解析

默认情况下,生成项目时会把Views的视图文件编译成dll*.Views.dll
同时我们也看不到Views文件夹,如果有频繁修改视图内容的需求,这样就很不方便
我们可以将视图预编译改为运行时编译

1、添加Nuget:

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

2、在项目文件的节点下添加:

<RazorCompileOnPublish>false</RazorCompileOnPublish>

3、在AddControllersWithViews()方法后添加AddRazorRuntimeCompilation()

services.AddControllersWithViews()
.AddRazorRuntimeCompilation();

4、重新发布项目,发布后就可以看到多了Views文件夹,同时*.Views.dll没了
在这里插入图片描述

dotNET 6代码片断:

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <StartupObject>ZoomLaCMS.Program</StartupObject>
    <RazorCompileOnPublish>false</RazorCompileOnPublish>
    <RazorCompileOnBuild>False</RazorCompileOnBuild>
    <MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
  </PropertyGroup>
本文责任编辑: 加入会员收藏夹 点此参与评论>>
复制本网址-发给QQ/微信上的朋友
下一篇文章:
AI智能听书
选取音色