明源重构开发项目/项模板插件
- 安装插件,暂时仅在VS2019和VS2022进行测试使用通过,适配VS版本>=16.10,VS2019如果安装完成后无法使用请尝试更新VS。
- 新建项目->搜索“明源”,选择“明源重构开发项目”(新增过后,就可以直接选择历史记录中的)
- 填写项目名称(注意必须符合开发规范命名:扩展项目以.Plugin结尾,Model项目以.Model结尾,接口项目以.Interface或.Interfaces结尾,资源项目包含.Resource,二开项目以.Customize结尾)
- 设置位置,一般项目位置必须为三级目录(如\01-采招系统\01 项目准备\02 二开独立\),资源项目路径为二级目录(如\01-采招系统\20 资源文件\)
- 添加->新建项,选择“明源重构项目类”,命名规则参考说明 (已弃用)
- 添加->新建明源重构项...,选择“文件项类型”,输入文件名称
项目模板,自动完成内容
- 项目输出路径
- Assembly信息
- 资源文件模板
- 注册接口类
新建明源重构项
- 在解决方案中选中对应目录右键->添加->新建明源重构项...(或直接按快捷键Shift+F2)打开
- 可以创建文件、文件夹、文件夹+文件
- 打开窗口时将根据所在目录加载检索文件项类型(暂时不太精准,如无法选择所属类型,可双击文件项类型已加载所有类型)
- 选择了文件项类型,可自动添加文件夹、文件后缀名(如在项目直接新增应用服务,会自动添加到AppServices文件夹下,且后缀AppService可不填写)
- 实体类可直接选择数据表,自动生成实体属性
生成实体代码说明
- 如果是需要新增二开实体对象,或者扩展产品实体(项目未新增实体类),先在对应的目录添加实体类(已经存在实体类需要更新属性跳过该步骤)
- 在Model项目下打开需要生成实体代码的类
- 在命名空间内,右键->生成Entity代码->输入数据表名->确定(如果类存在EntityName属性,将自动使用该属性值)
- 将根据元数据表生成对应的实体类,如果命名空间中包含多个类,将第一个类全部替换为生成的代码
- 如果未显示按钮,请检查是否在Model项目下、命名空间内右键,且文件非以Const、Enum、Dto、LangRes结尾,命名控件不包含.Const、.Enum、.Dto,因采用异步加载,所以可能刚刚打开的解决方案需要等待一段时间,右键才能加载出按钮
生成多语言代码说明(因实现方案不完善,暂处于测试版本)
- 右键->二开多语言查询
- 选择需要生成代码的多语言项
- 单击生成CS代码或生成JS代码,将自动将选择的多语言项生成代码,并放至剪贴板中
- 在对应位置Ctrl+V即可
- 如果未显示按钮,因采用异步加载,所以可能刚刚打开的解决方案需要等待一段时间,右键才能加载出按钮
生成AppService.js说明
- 在AppService类中,右键->生成AppService.js
- 将根据AppService类中public的方法生成对应的AppService.js
- 会先根据AppService类名查找对应的AppService.js文件,如果没有找到将生成新的文件,需要手动保存到对应目录下,并包含在项目中
- 如果已存在对应的AppService.js文件,将替换原js文件中所有内容,请注意做git对比是否原文件中存在手动修改内容
- 请确保AppService类名的唯一性,否则可能无法正确的替换到AppService.js内容
- 如果未显示按钮,请检查文件名是否以AppService.cs结尾,因采用异步加载,所以可能刚刚打开的解决方案需要等待一段时间,右键才能加载出按钮
js文件前台编译说明
- 在js文件中,右键->前台编译
- 如果未显示按钮,请检查是否为js文件,是否存在"\00-ERP站点\node\02_二开构建.cmd"文件,因采用异步加载,所以可能刚刚打开的解决方案需要等待一段时间,右键才能加载出按钮
项模板,命名说明(已弃用,不做更新)
- 为了保证PublicService、RemoteService公共接口及远程接口服务正常注册,请确保二开项目的AppInitializer.cs文件命名一致,且在项目根目录中,非Properties中
- 以Plugin结尾,项目名包含Plugin,扩展产品类,自动引用产品DLL,类继承PluginBase<产品类>
- 以AppService结尾,二开应用服务,自动添加类标签AppServiceScope
- 以DomainService结尾,二开领域服务,继承DomainService
- 以Profile结尾,二开集成配置,继承MapProfile
- 以AjaxHandler结尾,二开处理程序,继承AjaxHandler
- 以DataApiHandler结尾,二开数据API,继承DataApiBaseHandler,实现LoadData、LoadFields方法
- 以QueryDataHandler结尾,二开查询组件的备选项API,继承AjaxHandler, IQueryDataApiOption,实现Load、Query方法
- 以PublicService结尾且以I开头,二开公共接口服务,继承IPublicService,存在接口实例注释代码(可手动删除)
- 以PublicService结尾,二开公共服务,继承AppService, I接口,自动引用接口项目(项目需以Interfaces或Interface结尾),自动在AppInitializer中添加注册对应的接口服务
- 以RemoteService结尾且以I开头,二开远程接口服务,继承IRemoteService,自动在AppInitializer中添加注册对应的远程接口服务
- 以EventSubscriber结尾,二开事件订阅者,继承EventSubscriberBase,实现Execute方法
- 以AggregateService结尾,二开聚合服务,继承AggregateService
- 以ResourceFilter结尾,二开资源化过滤,继承IResourceFilter,类标签ResFilterDescription(需手动填写名称及信息)
- 以ProjectFilter结尾,二开项目过滤,继承BaseProjectFilter,实现GetAllProjectList、GetDiagramModeFilterSql方法、SettingInfo属性,类标签ProjectFilterDescription(需手动填写名称及信息)
- 以Ex结尾,项目名包含Plugin,扩展实体对象,继承产品实体类,类标签EntityName(需手动填写表名)
- 以Dto结尾,项目名包含Model,二开Dto对象,继承DtoBase,类标签DtoDescription
- 以LangRes结尾,二开多语言,GgptAspxNav000127属性模板(仅作为模版,需调整为自定义的多语言)
- 以Job结尾,二开后台作业,继承IBackgroundJob,实现Execute方法,类标签BackgroundJobName(需手动填写名称及信息),暂时仅支持自动创建无参后台作业,有参作业,将继承的改为IBackgroundJob<参数类>,在Execute方法中加上参数类的参数即可
- 以Enum结尾,二开枚举类,类标签EnumOption,实例代码作为参考
- 以EventPublisher结尾,二开事件发布者,继承EventPublisherBase,示例代码可作参考
- ...
- ..
- .
| |