做过上位机的朋友,应该都遇到过类似情况:每次接新项目,登录、权限、菜单这些基础功能都要重新搭一遍。业务还没开始写,前面几天已经耗在这些重复劳动上了。所以很多人会找一个差不多的项目来改。
最近我发现一个开源 WinForms 上位机模板,把这些基础能力都提前做好了。它叫 WinformTemplate,一个开箱即用的上位机客户端模板,还自带 AI 二开能力。

下面我挑几个比较实用的功能详细说一下。
AI 二开 Skill:把项目规范交给 AI
最让我感兴趣的是它的 AI 二开 Skill。它会先把项目开发规范整理好,后续开发直接照着用。项目把为 WinForms 二次开发而设计的 Skill 放到了 .claude/skills 和 .codex/skills 目录下,Claude 和 Codex 都可以直接使用。
以后让 AI 修改项目时,不用每次从头解释项目结构和编码规范。

比如新增一个业务模块时,Skill 会要求 AI 按照现有项目结构组织代码:
Model → Repository → Service → ViewModel → UI
数据访问层还要分别考虑 EF、WebAPI、Local 三种数据源,DI、菜单、权限、MockData 和测试也都有各自要求。
一些容易踩到的坑也已经写进规则里:
- UI 和 ViewModel 不能直接对
DbContext、HttpClient 进行操作。
- 分页、搜索、排序要下放到 Repository。
- 当 WebAPI 断开时,要区分“服务不可用”和“没有查到数据”。
在我看来,这套 Skill 更像是给 AI 准备的一份项目开发手册。只要告诉它“帮我添加一个 Order 订单模块”,它就能根据规则判断模块应该放在哪里、要创建哪些文件、数据层怎么连接、菜单和权限怎么配置、最后要跑哪些测试。

因为整个过程都基于仓库里已有的规范生成,代码风格会比较一致,后面修改时也不容易越改越乱。我实际测下来,一个最小可运行的模块,差不多半小时就能生成出来。

登录与权限:基础能力已内置
密码使用 PBKDF2 加盐哈希存储,密码保存这块不需要自己再单独设计。
角色权限也不只是把菜单隐藏起来。用户进入页面之后,系统会再进行一次权限校验,这样就能防止用户绕过菜单直接访问页面。

三种数据源:一行配置切换
做上位机项目时,联调环境经常会变化,数据源切换往往比较麻烦。这个模板支持 EF、WebAPI、Local 三种数据源,只要修改 config.json 中的 Default 值,就能切换当前使用的数据源。
开发阶段如果数据库还没准备好,可以先使用 Local 数据源,读取本地 JSON 假数据,把界面和业务流程先跑起来。到了现场之后可以切换到 EF,默认使用 SQLite,项目里也保留了 MySQL 的配置入口。如果需要分布式部署,则可以使用 WebAPI,项目还提供了独立的服务端仓库。

后端没有启动时,前端也不会直接崩溃,而是会给出数据源未连接的提示。
AntdUI 界面:更现代的观感
如果直接使用原生 WinForms 控件,做出来的界面给客户演示时,视觉效果有时确实不太占优势。AntdUI 把 Ant Design 的设计思想带到了 C# 中,而且控件也都重新绘制了。登录页、账户管理、角色管理等页面已经准备好,配色和交互看起来都比较现代,拿来做项目原型或基础后台会方便一些。

Product 样例基本演示了常见的数据管理操作。分页、搜索、排序、批量操作等功能都已实现,Excel 导入导出也已经做好。如果要做一个普通的数据管理页面,这些功能已经足够了。

跑起来门槛很低
装好 .NET 8 SDK,把项目 clone 下来,再完成 restore、build、run 这三步,基本就能启动。

第一次运行时,项目会自动把本地的配置复制过来。账号是 admin,密码是 123456。
想体验 AI 二开的话,可以把需求直接交给 Agent,让它根据项目规范尝试添加一个模块,这样能更直接看到这套 Skill 的效果。
需要的朋友可以试一下。
开源地址:https://github.com/agentthink/winform-base-template