公司使用ABP框架,框架中含有大量重复性代码如仓储 dto appservice等所以编写了代码生成器来直接生成这部分代码
- 思路
a) 通过项目中的配置文件读取数据库字段,然后通过模板+字段+表信息生成文件,然后把文件放到项目对应位置。这个实现只能使用在ABP项目上面,并且命名空间,实体后缀,项目结构都要约定好,因此只能适用公司的ABP项目。
- 关键点说明
a) Vs增加菜单 ->读取项目信息->点击弹出窗体->用户选择数据表及要生成的相关代码->点击生成
b) 除了第一,二步,后面的跟正常窗体开发一致
c) 新建VSIX project 项目,这种是VS插件项目
d) Vs增加菜单
a) Vs可以选择多个地方增加菜单,根据实际情况选择在解决方案右键上增加菜单
b) 添加->新建项->Visual C#项->Extensibility->VSPackage-> Command 新增后才会有.vsct 文件
c) 在.vsct文件中修改
- IDM_VS_MENU_TOOLS -> IDM_VS_CTXT_SOLNNODE 解决方案右键菜单按钮
- ButtonText 里面 改成想要的按钮名称
e) 读取项目信息
a) AsyncPackage package 在 Command.cs 文件中有这个字段,这个字段有实现了很多接口。做一个转换
DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));
Assumes.Present(dte);
- dte可以读到解决方案信息及项目信息
f) 点击按钮后弹出一个窗体,把读取到的信息传到窗体。窗体后续开发跟正常窗体开发一致。
g) 注意
a) 无法通过以下代码(AppDomain.CurrentDomain.BaseDirectory/ Environment.CurrentDirectory)读取插件根目录,反射/或者配置相关信息要注意处理。
后续模板引擎使用 NVelocity
参考:https://www.cnblogs.com/chriskwok/p/10724970.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构