导出 CS 程序(把工作空间变成独立程序)
ToolBank 主菜单 二次开发 → 导出CS程序 可以把当前工作空间连同运行期一起导出为可独立编译、分发的 WPF C# 工程。适合把“你在 ToolBank 里搭好的检测流程”交付给客户 / 集成进产线软件的场景。
导出的到底是什么
| 内容 | 说明 |
|---|---|
| 你的工程内容 | 程序文件(.tbcode)+ 用户视图布局(.tblayout)+ 序列化变量,原样带入 |
| 运行期 | Runtime/ 目录:程序运行所需的全部 DLL(不含 pdb / 测试件),导出工程编译后即可脱离 ToolBank 主程序独立运行 |
| 主界面 | 导出的 MainWindow 把用户视图包装为主界面:静默加载程序 → 恢复视图布局,最终用户打开就是一个“产品化”界面 |
| SDK 示例 | 附带 MainUI.ToolBank.ClientSdk 与 A/B/Q 三线示例代码,二次开发者可直接照抄扩展 |
| README | 针对该次导出的使用说明 |
不导出:算子的实现源码——导出的是运行期而非工程源码,算法以 DLL 形式分发,保护算子知识产权。
操作步骤
- 打开 / 整理好要交付的工作空间(程序、用户视图、变量都就位);
- 主菜单 二次开发 → 导出CS程序;
- 选择目标文件夹(⚠️ 不能选在工作空间内部,避免递归复制);目标框架默认 .NET Framework 4.7.2;
- 点击导出,等待完成;
- 用 Visual Studio 打开导出的
.sln编译,产物即可独立分发。
导出目标文件夹\
├── ToolBankExport.sln / .csproj
├── App / MainWindow.* ← 用户视图包装主界面
├── Runtime\ ← 全部运行期 DLL
├── Workspace\ ← 程序 .tbcode + 布局 .tblayout + 变量
├── README.md ← 本次导出说明
└── (SDK 示例代码)
二次开发怎么接
导出工程中,MainWindow 已通过 SDK 完成“加载 → 运行”的基础闭环。想加业务逻辑(对接 MES、做数据上报、定制界面按钮),在导出的工程里继续写:
// 典型接入点:程序运行完成后读取结果
var result = sdk.RunAll();
if (!result.Success)
{
// result.ErrorMessage / FailedToolIndex 定位失败算子
}
double[] scores = sdk.GetDoubleList("Main", "Score");
// → 上报数据库 / 控制 PLC / 记录日志……
三线 API 的能力与示例见 二次开发 SDK,导出工程里也自带同款示例,可直接对照。
限制与注意
- 目标文件夹不可位于工作空间内;
- 导出需要当前工作空间可正常打开运行——先在主程序里把流程跑通再导出;
- 客户侧不需要安装 ToolBank 主程序,但需要与导出目标框架一致(.NET Framework 4.7.2)的运行环境与必要的 VC++ 运行库(运行期含原生算子时);
- 深度学习 / OCR 等算子的模型文件请一并放进分发目录,并在程序里把
ModelPath指向分发后的实际位置(可用$(SolutionDir)相对化,见 工具与算子库); - 算法更新后重新导出即可获得新版本——对客户而言相当于一次“换包升级”。