一款轻量、可扩展的 Windows 工具箱。基于 AssemblyLoadContext 插件架构, 支持热加载与热更新,无需重启即可升级功能模块。
围绕"轻量化 + 可扩展"的设计理念构建
每个工具独立打包为 DLL,通过 PluginManager 动态发现与加载,模块之间零耦合。
后台轮询服务端清单,检测到新版本自动下载、卸载旧 Assembly、加载新 DLL,UI 自动刷新。
每个插件运行在独立的 AssemblyLoadContext 中,卸载时 GC 可完全回收内存,无泄漏风险。
通过 WMI 查询 CPU、内存、磁盘、网络等硬件信息,实时监控 Windows 运行状态。
更新服务器压缩为单个 linux-x64 自包含二进制,上传即可运行,零外部依赖。
新建 WPF 类库、实现 IToolPlugin 接口、编译输出到 Plugins 目录即完成一个插件。
三层结构:WPF 主程序 → 插件管理 → Linux 更新服务
┌─────────────────────────────────────────────────────────────────┐ │ MToolbox.WebServer (Linux · 单文件) │ │ GET /api/plugins/manifest ← 版本清单 │ │ GET /plugins/{id}.dll ← 插件下载 │ │ GET /shell/MToolbox.exe ← 主程序下载 │ ├─────────────────────────────────────────────────────────────────┤ │ UpdateService │ │ 定时轮询 → 版本比较 → HTTP 下载 → 替换 DLL → 热切换 │ ├─────────────────────────────────────────────────────────────────┤ │ PluginManager │ │ Discover() → Load() → Unload() → UI 刷新 │ ├─────────────────────────────────────────────────────────────────┤ │ PluginLoadContext │ │ AssemblyLoadContext 隔离 · 可回收 · 无泄漏 │ ├─────────────────────────────────────────────────────────────────┤ │ MToolbox.Shell (WPF · win-x64 · 单文件) │ │ MainWindow → MainViewModel → Plugin Views │ └─────────────────────────────────────────────────────────────────┘
当前服务端已发布的插件及版本
客户端 UpdateService 对接的 HTTP 端点
| 方法 | 路由 | 说明 |
|---|---|---|
| GET | /api/plugins/manifest | 插件版本清单 JSON |
| GET | /api/shell/version | 主程序版本信息 |
| GET | /api/health | 服务健康检查 |
| GET | /plugins/{filename} | 下载指定插件 DLL |
| GET | /shell/{filename} | 下载主程序文件 |