OSharp 代码生成器
OSharpFramework(.NetStandard2.0)框架分层代码生成基架,配合实体生成各层的基础代码
生成器使用流程
- 配置代码生成的需要的项目信息,项目的各个模块信息,模块的各个实体信息,实体的各个属性信息,保存为配置文件
- 基于项目配置信息和内置的已编译Razor模板,使用Razor引擎
RazorEngine 生成 实体类,实体配置类,InputDto,OutputDto,业务层接口,业务层实现,MVC控制器代码 等项目各个层次的代码
- 将生成的代码整合进项目工程中,通过类继承和partial分部类对生成代码进行扩展,实现实际的业务需求
代码生成流程
- 创建新的代码生成项目配置信息时,自动使用初始化的内置模板配置,内置模板配置如下:
- 可按需要添加自定义的代码模板,模板需指定元数据(数据实体或者模块信息)、模板文件路径、生成代码输出相对路径等信息,如下图:
- 可对模板进行预编译,由cshtml源文件生成dll程序集,预编译将进行如下工作:
- 对于内置模板,生成程序集路径为:插件安装目录/Resources/Templates.XXX.dll,对于自定义模板,生成程序集路径为:自定义模板所在目录/模板文件名.dll(如上图)
- 获取模板源代码的MD5和生成程序集文件的MD5,存储到预编译配置信息中,以供是否已预编译的对比验证
- 配置代码生成项目的项目信息、项目各个模块信息、模块各个实体信息、实体各个属性信息,并保存,保存的同时,模板配置也将同时保存到项目配置中
- 生成代码,验证模板是否已编译,未编译的进行编译,按照模板配置中的输出路径格式,保存生成的代码文件
- 使用项目命名空间、模板名称、实体名称等信息对输出路径中的点位符进行替换,获得代码文件真实保存路径
- 如果VisualStudio已打开的解决方案是OSharp解决方案
- 对于“单次” = false 的模板,属于每次都生成代码的模板,直接添加或覆盖现有的代码文件
- 对于“单次” = true 的模板,属于只生成一次的模板,如果代码文件不存在,直接添加生成的代码文件,如果代码文件已存在,则跳过不覆盖,以保存用户对文件的修改信息。
- 如果不是OSharp解决方案,直接添加或覆盖所有的代码文件
界面展示
入口菜单
项目生成代码配置
生成的代码
更新日志
3.1.2 (2020/3/29)
- 配合osharp v3.1.2 更新,升级代码模板
3.0.0.5 (2019/11/07)
- 更新 Project-Module-Entity-Property 的显示布局
3.0.0.3 (2019/10/15)
- 自动分析并确定OSharp源代码文件夹输出位置(src\)
- 配合Repository的Query方法更新,更新模板
- 修复Controller.Delete的主键类型错误的问题
1.7.2 (2019/09/10)
- 修复Controller类的Delete方法主键类型固定为int的问题
1.7.0 (2019/09/08)
- 随框架更新,升级NgAlain8之后的部分前端代码问题
1.6.3 (2019/05/22)
- 修复生成的InputDto和OutputDto代码缺少可空值类型(Type?)的问题
1.6.2 (2019/05/20)
- 属性元数据新增“数据权限标识”的字符串字段
1.6.1 (2019/05/19)
- 新增Angular-Component 的required代码的生成
- 新增InputDto的Attribute代码的生成
- 修复EntityConfiguration生成代码缺少ICollection 命名空间的问题
1.6.0 (2019/05/16)
- 配合 osharp1.0.1 的框架更新,更新代码生成器
1.5.3 (2019/04/30)
- 配合 osharp0.5.0-beta07 的框架更新,添加Service层的InputDto的数据验证
1.5.2 (2019/04/30)
- 修复在VS安装时报Visual Studio MPF的问题
1.5.1 (2019/04/30)
- 增加模块,实体,实体属性的行排序,方便调整生成代码的数据顺序
- 将模块/实体/实体属性的下级数据显示由按钮改为行选择事件
- 移除生成代码中的“最后生成时间”,避免重新生成时,未更改的文件也存在最后更新时间冲突的问题
- 调整外键关系选项列表,移除实体属性的最小/大值
- 增加项目级别的代码生成,优化模板细节,增加全部模板编译按钮
- 实体配置添加是否列表选项,用于控制是否生成前端列表代码
- 修复实体配置类一对一的外键错误问题
1.5.0 (2019/04/26)
- 增加模块,实体,实体属性的行排序,方便调整生成代码的数据顺序
- 将模块/实体/实体属性的下级数据显示由按钮改为行选择事件
- 修复实体配置类一对一的外键错误问题
1.4.0 (2019/04/20)
- 添加实体类导航属性及实体类外键配置FluentAPI的代码生成支持
- 添加Angular的ng-alain的后台管理模块代码生成
1.3.0 (2019/04/14)
- 添加生成器的
VS2019 的支持
- 配合
VS2019 的升级,将生成器的入口菜单改为TopLevel ,在VS2017 中将占用一个顶级菜单项,在VS2019 中将被集中到 扩展 菜单下
- (template):将生成基类的
private 成员访问性更改为protected ,以便在派生类中直接使用
| |