VS代码生成器插件开发,ABP代码生成器

公司使用ABP框架,框架中含有大量重复性代码如仓储 dto appservice等所以编写了代码生成器来直接生成这部分代码

  1. 思路

a)      通过项目中的配置文件读取数据库字段,然后通过模板+字段+表信息生成文件,然后把文件放到项目对应位置。这个实现只能使用在ABP项目上面,并且命名空间,实体后缀,项目结构都要约定好,因此只能适用公司的ABP项目。

  1. 关键点说明

a)      Vs增加菜单 ->读取项目信息->点击弹出窗体->用户选择数据表及要生成的相关代码->点击生成

b)      除了第一,二步,后面的跟正常窗体开发一致

c)      新建VSIX project 项目,这种是VS插件项目

d)      Vs增加菜单

a)      Vs可以选择多个地方增加菜单,根据实际情况选择在解决方案右键上增加菜单

b)      添加->新建项->Visual C#项->Extensibility->VSPackage-> Command  新增后才会有.vsct 文件

c)      在.vsct文件中修改

  1. IDM_VS_MENU_TOOLS -> IDM_VS_CTXT_SOLNNODE  解决方案右键菜单按钮
  2. ButtonText 里面 改成想要的按钮名称

 

e)      读取项目信息

a)      AsyncPackage package  在 Command.cs 文件中有这个字段,这个字段有实现了很多接口。做一个转换

DTE dte = (DTE)ServiceProvider.GetService(typeof(DTE));

Assumes.Present(dte);

 

  1. dte可以读到解决方案信息及项目信息

 

f)       点击按钮后弹出一个窗体,把读取到的信息传到窗体。窗体后续开发跟正常窗体开发一致。

g)      注意

a)      无法通过以下代码(AppDomain.CurrentDomain.BaseDirectory/ Environment.CurrentDirectory)读取插件根目录,反射/或者配置相关信息要注意处理。

后续模板引擎使用 NVelocity 

参考:https://www.cnblogs.com/chriskwok/p/10724970.html

 

上一篇:abp vnext EF AggregateRoot 导航属性


下一篇:[.Net]使用Soa库+Abp搭建微服务项目框架(一):Abp与DDD相关知识回顾