You need to enable JavaScript to run this app. Cofoundry框架下如何将视图嵌入程序集供主网站使用
优惠活动
大模型
产品
解决方案
定价
更多

Cofoundry框架下如何将视图嵌入程序集供主网站使用

Cofoundry 嵌入类库视图的标准实现方案

Cofoundry 针对独立模块化程序集场景提供了原生的视图嵌入加载能力,无需自定义虚拟路径提供程序,完全兼容你当前的目录结构,标准实现步骤如下:

1. 配置类库的嵌入视图资源

在独立程序集Bookings的项目文件(.csproj)中,将对应视图文件标记为嵌入资源,保持类库内的视图目录结构和当前使用的虚拟路径完全一致(即类库内保留Views/CofoundryPages/Components/BookingRequest/Default.cshtml的相对路径)。
SDK风格项目的配置示例如下:

<Project Sdk="Microsoft.NET.Sdk.Razor">
  <!-- 项目原有引用、依赖配置 -->
  <ItemGroup>
    <!-- 将所有Views目录下的cshtml文件标记为嵌入资源 -->
    <EmbeddedResource Include="Views/**/*.cshtml" />
  </ItemGroup>
</Project>

2. 注册模块资源解析

Cofoundry 内置了EmbeddedResourceVirtualPathProvider实现嵌入资源的视图解析,不需要自行开发虚拟路径逻辑。你只需要在Bookings程序集中实现Cofoundry的启动配置接口,将当前程序集注册到Cofoundry的资源解析管线中:

using Cofoundry.Core.Configuration;
using Microsoft.Extensions.DependencyInjection;

public class BookingsModuleStartupConfig : ICofoundryStartupConfiguration
{
    public void ConfigureServices(IMvcBuilder mvcBuilder, IServiceCollection services)
    {
        // 将当前程序集的嵌入资源加入Cofoundry视图解析范围
        mvcBuilder.AddCofoundryEmbeddedResources(typeof(BookingsModuleStartupConfig).Assembly);
    }
}

Cofoundry 会自动扫描所有引用程序集中实现了该接口的启动类,不需要在主网站程序中手动添加注册逻辑。

3. 路径兼容与注意事项

  • 无需修改现有ViewComponent的视图返回逻辑,Cofoundry的资源解析规则会按照主站点物理文件、已注册嵌入程序集的顺序匹配相同虚拟路径的视图,和你当前的/Views/CofoundryPages/Components/BookingRequest/Default.cshtml路径完全兼容。
  • 排查视图加载失败的两个核心检查点:
    • 确认cshtml文件已经被打包到Bookings.dll的嵌入资源中(可通过反编译工具查看dll的嵌入资源列表)
    • 确认启动配置类没有被排除在Cofoundry的扫描范围外(默认扫描所有应用引用的非系统程序集)
  • 不要自行实现传统ASP.NET MVC风格的自定义VirtualPathProvider,避免和Cofoundry内置的嵌入资源解析逻辑产生冲突,导致视图优先级混乱。

内容的提问来源于stack exchange,提问作者Jørn Wildt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 03:06:10