Skip to the content.

组件源码复制与本地包消费

可复用项目位于根 src 或各模块的 src;模块的 docs、src、test 与独立解决方案集中在同一目录。samples 中的业务模型、Host 和适配示例不属于共享组件依赖闭包。 使用 .NET SDK(版本由 global.json 固定)、Git 和 PowerShell 7 执行以下命令。

导出源码

在仓库根目录执行:

./build/export-modules.ps1 -Modules MS.Microservice.Messaging.SelfManaged.EFCore,MS.Microservice.Messaging.RabbitMQ -OutputDirectory ../message-components

输出目录必须不存在。脚本遍历 ProjectReference,复制选中组件及其依赖的受版本管理文件, 并带上 SDK、构建属性、中央包版本和公开 NuGet 源配置。它不会复制 samples、密钥、bin、obj。 module-manifest.json 记录源提交、文件 SHA-256 和项目闭包。

在导出目录独立构建:

Set-Location ../message-components
dotnet restore modules.slnx --configfile nuget.config
dotnet build modules.slnx -c Release --no-restore

宿主随后引用导出目录中的项目。自行维护 DbContext、模型映射、迁移和 Secret。 不需要原仓库的解决方案、Lab 或隐藏的父目录配置。

打本地包

./build/pack-modules.ps1 -Modules MS.Microservice.Messaging.SelfManaged.EFCore,MS.Microservice.Messaging.RabbitMQ -OutputDirectory ../local-feed -Version 1.0.0-local.1

脚本按依赖顺序打包整个闭包,并生成 packages.sha256.json。每轮使用新版本,避免本地 NuGet 缓存 复用同版本旧包。消费项目在自己的 nuget.config 中配置此目录和 nuget.org,然后引用包。 运行时不需要源码目录。

独立消费验证

./build/validate-module-consumption.ps1

默认验证全部共享组件。脚本在系统临时目录创建独立源码副本和包消费项目,完成构建、打包、 程序集类型加载。如果闭包包含 SelfManaged,还在两个独立业务 DbContext 中实际验证:

此验证使用 SQLite,不访问 Broker,也不替代 PostgreSQL/RabbitMQ 故障验收。 报告默认保存在 artifacts/validation/module-consumption.json;临时目录保留供检查。 使用 -Modules 可选择子集,使用 -ReportPath 指定报告位置。 已执行的 Windows 验证记录列出了源版本和范围。

接入边界

组件 宿主需要负责的内容
Messaging.Abstractions 注册稳定消息名称/版本,定义 Handler,使用最外层工作单元
Messaging.SelfManaged.EFCore 业务 DbContext、AddSelfManagedMessaging 模型、迁移、后台生命周期
Messaging.RabbitMQ Secret、Broker 拓扑显式初始化、连接和确认超时
Messaging.Wolverine 独立具体 DbContext、原生存储初始化、原生恢复配置
Persistence.EFCore / SqlSugar 数据库 Provider、业务映射、事务入口、数据库结构
AspNetCore / Logging / Observability 身份 Authority/Audience、权限、日志后端、遥测导出器
AI.* Provider 凭据、模型能力、超时、配额与成本报告
Audio / Excel / EventSourcing 平台限制、输入文件、资源所有权;事件溯源存储示例在 Lab

教育图像场景的源码复制需包含 samples/AI 中的场景类库及其共享依赖; 它不是 AI.Core 的默认功能。QuestionGeneration Harness 可以单独引用。