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

.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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:05:24