# 二次开发合集 **Repository Path**: gcr_offical/samples ## Basic Information - **Project Name**: 二次开发合集 - **Description**: 包含模块、扩展、插件的示例合集 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-11-13 - **Last Updated**: 2026-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # GCR.Framework.Samples GCR.Framework 的官方样例仓库。每个样例都是**独立工程**,演示如何基于 GCR.Framework 开发模块(Module)与插件(Plugin)。 > 框架本体仓库:https://gitee.com/gcr_offical/framework > 框架机器可读契约规范:`文档/GCR.Framework-机器可读契约规范.md`(位于框架仓库) ## 目录约定 每个样例一个一级目录,目录名即「样例名称」: ``` GCR.Framework.Samples/ ├── README.md # 本文件:约定 + 样例索引 ├── Directory.Build.props # 公共构建属性(含 GCRFrameworkRoot) ├── .gitignore └── <样例名称>/ ├── README.md # 该样例的说明(位于样例根目录) ├── src/ # 源码工程(独立 .csproj) │ └── <样例名称>/ ├── test/ # 单元测试工程(xUnit) │ └── <样例名称>.Tests/ └── doc/ # 样例文档 / 截图 / 说明 ``` - **src**:样例的实现工程,可直接 `dotnet build`。 - **test**:针对该样例的契约冒烟测试,可直接 `dotnet test`。 - **doc**:样例的补充文档。 - **README.md**:放在**样例根目录**,说明它演示什么、如何构建与部署。 ## 如何引用框架 所有样例通过 `Directory.Build.props` 里的 `GCRFrameworkRoot` 引用 GCR.Framework 源码工程(默认 `../GCR.Framework/代码`)。 ```bash # 标准布局(框架仓库与本仓库同级)直接可构建: dotnet build <样例名称>/src/<样例名称>/<样例名称>.csproj # 框架不在默认相对位置时,命令行覆盖: dotnet build /p:GCRFrameworkRoot=/abs/path/to/GCR.Framework/代码 ... ``` > 长期目标:框架发布到 NuGet 后,样例改为 `PackageReference`,即可脱离本地源码树独立构建。当前阶段用源码工程引用,便于跟着框架契约一起演进。 ## 如何构建 / 测试 每个样例相互独立,按需进入对应目录构建: ```bash # 构建 dotnet build DemoCustomerModule/src/DemoCustomerModule/DemoCustomerModule.csproj # 测试 dotnet test DemoCustomerModule/test/DemoCustomerModule.Tests/DemoCustomerModule.Tests.csproj ``` ## 样例索引 | 样例 | 类型 | 演示要点 | | --- | --- | --- | | [DemoCustomerModule](./DemoCustomerModule) | 模块 | 声明管理对象 `customer.org` + 内存态 Store,跨对象扩展的「目标对象来源」 | | [DemoCustomerCrmPlugin](./DemoCustomerCrmPlugin) | 插件 | 纯跨对象扩展:无源码给 `customer.org` 追加 CRM 字段(EXT-O 机制核心场景) | ## 部署到 GCR.Framework 样例产出的是贡献者程序集 + 包清单,需放进框架运行实例的扩展目录: 1. 构建样例,`bin/Debug/net10.0/` 下得到 `.dll` 与同目录的 `package.json`。 2. 模块 → 复制 `Dll` 与 `package.json` 到框架实例 `modules//`;插件 → 复制到 `plugins//`。 3. 重启框架实例,扩展在启动期由 Catalog 装配;装配失败会在「模块管理 / 插件管理」页显示具体原因(A3)。