.NET 6中阻止RCL的Razor页面发布至输出目录并使用嵌入式视图的方法
在.NET 6中阻止Razor类库(RCL)视图发布到输出目录,改用嵌入式视图
当你在.NET 6环境下以文件夹模式发布Web应用时,Razor类库(RCL)中的Razor视图/页面默认会被复制到输出目录。要改为使用嵌入式视图并阻止文件复制,只需按以下步骤配置:
1. 配置Razor类库(RCL)项目
编辑RCL的.csproj文件,添加以下配置项,确保视图被编译为嵌入式资源且不复制到输出目录:
<Project Sdk="Microsoft.NET.Sdk.Razor"> <PropertyGroup> <TargetFramework>net6.0</TargetFramework> <AddRazorSupportForMvc>true</AddRazorSupportForMvc> <!-- 启用Razor视图编译并嵌入资源 --> <RazorCompileOnPublish>true</RazorCompileOnPublish> <EmbedRazorGenerateSources>true</EmbedRazorGenerateSources> <!-- 禁止将Razor源文件或编译后的中间文件复制到发布目录 --> <CopyRazorGenerateFilesToPublishDirectory>false</CopyRazorGenerateFilesToPublishDirectory> <CopyRefAssemblyToPublishDirectory>false</CopyRefAssemblyToPublishDirectory> </PropertyGroup> </Project>
2. 配置Web应用项目
在Web应用的Program.cs中,添加对RCL嵌入式视图的支持,让框架能从RCL的程序集中加载嵌入式视图:
var builder = WebApplication.CreateBuilder(args); // 添加Razor Pages服务,并指定加载RCL的嵌入式视图 builder.Services.AddRazorPages() .AddEmbeddedViewsAssembly(typeof(MyRazorClassLibrary.Areas.Account.LoginModel).Assembly); var app = builder.Build(); // 常规中间件配置 if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error"); app.UseHsts(); } app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.UseAuthorization(); app.MapRazorPages(); app.Run();
完成以上配置后,发布WebApp时,输出目录中将不再出现Areas/Account/Login.razor这类来自RCL的视图文件,Web应用会直接从RCL的嵌入式资源中加载对应的视图/页面。
内容的提问来源于stack exchange,提问作者Ehsan Vali
相关产品推荐
相关产品推荐

