用途:为仓库中已存在的第三方 .ppmplugin 原生模块生成 Canvas Studio 调度器 PCF(配套控件)。它通过宿主注入的全局 window.PowerApps.NativeExtension.sendAsync 调用原生模块,按 ./manifest.json 中读取的复合键 <name>/<receiver> 路由。该 PCF 位于同一仓库的 pcf/<Pascal>PCF/ 下,不属于 .ppmplugin 打包内容(打包只含原生二进制与 manifest.json 及 android/ios 目录)。
前置:需已有原生模块;需 Node 20+ 与 pac CLI。本步骤仅本地脚手架,不需要 pnpm、包源认证、.NET SDK 运行时或 pac 登录;只有用户另选部署分支时才即时检查部署前置。需先具备 PRD.md §8 PCF 内容与 .extension-state.md 至少 scaffold 阶段。
处理流程:读取共享文档与 PRD;从 ./manifest.json 的 receivers[] 解析调度目标(name、nativeModule、methods)并与原生源码校验,若漂移则停止;向用户确认脚手架计划。
命令示例:mkdir -p pcf && cd pcf && pac pcf init --namespace PowerApps --name <Pascal>PCF --template field --framework none。命名空间固定 PowerApps,模板为 field,框架为 none。
关键约束:必须通过 sendAsync 调度,绝不直接调用 cordova.exec;信封为原始对象 { method, args: [request] },内部由 sendAsync 序列化,args 必须是 JSON 数组;解析 result.data 时需用 extractResponse 处理包裹容器。
清单属性注意:display-name-key 与 description-key 不得含 ASCII 撇号或原始 < > &,否则推送校验失败,应改写措辞或使用 U+2019。
限制:仅本地生成与构建冒烟检查,不接触 pac auth,不执行 pac pcf push;部署由 /publish-pcf-companion 单独处理。其他平台或价格信息暂未提供。