使用Telosys DSL模型生成ASP.NET Core多项目代码相关问题
问题描述
已知存在ASP.NET MVC代码生成的示例,现有三个相关问题咨询:
1. Java风格标准变量到.NET解决方案文件夹的映射
如何将如下偏向Java的标准变量映射到.NET解决方案的对应文件夹?
# ------------------------------------------- # STANDARD VARIABLES # ------------------------------------------- # --- Folders SRC = src/main/java RES = src/main/resources WEB = src/main/webapp TEST_SRC = src/test/java TEST_RES = src/test/resources DOC = doc TMP = tmp # --- Packages ROOT_PKG = org.foo.bar
2. abp.io多项目解决方案的Telosys适配
针对基于abp.io的多项目解决方案,是否需要为每个项目创建单独的Telosys项目及对应模板集?如何在Telosys配置文件中处理不同项目的各类路径?我计划开发Visual Studio扩展,自动提取项目文件夹、命名空间并编程修改Telosys配置文件完成适配。
补充说明:abp.io是开源ASP.NET Core框架,支持Angular、MVC Razor Pages、Blazor等多前端,以及Entity Framework、Dapper等多数据库,其解决方案结构和文件示例如下:

3. 元数据注解控制属性展示规则
如何通过元数据注解实现指定属性在列表页排除展示,或者排除在编辑功能外?
回答
问题1解答
你可以按照.NET项目通用目录规范调整变量映射,参考配置如下:
# ------------------------------------------- # STANDARD VARIABLES # ------------------------------------------- # --- Folders SRC = src/[你的主项目名称] # 主项目源码根目录 RES = src/[你的主项目名称]/wwwroot # 静态资源存储目录 WEB = src/[你的主项目名称] # Web相关代码、视图的根目录 TEST_SRC = test/[你的测试项目名称] # 单元测试源码目录 TEST_RES = test/[你的测试项目名称]/Resources # 测试资源存放目录 DOC = docs # 项目文档目录 TMP = temp # 临时文件目录 # --- 对应.NET命名空间 ROOT_PKG = [你的公司名/组织名].[你的项目名]
替换配置中所有方括号包裹的占位符为实际项目信息即可使用
问题2解答
- 不需要为abp解决方案的每个项目创建单独的Telosys项目,你可以复用同一套模板集,仅需在Telosys配置文件中新增自定义变量区分不同层级项目的输出路径即可,比如新增
SRC_DOMAIN、SRC_ENTITY、SRC_WEB等变量,分别指向abp解决方案中领域层、实体层、Web层的物理路径,生成代码时指定对应变量为输出根路径即可。 - 开发Visual Studio自动适配扩展的方案完全可行,扩展只需遍历解决方案的项目结构,提取每个项目的根命名空间和物理路径,直接写入Telosys配置文件的自定义变量段即可完成适配,无需拆分多个Telosys项目。
问题3解答
你可以通过自定义Telosys实体注解+模板逻辑判断实现该需求:
- 先在Telosys实体元数据中自定义两个注解标签:
@NotShowInList、@NotEditable,给不需要在列表页展示、不需要在编辑页开放修改的属性打上对应标签。 - 调整列表页、编辑页的代码生成模板,新增属性判断逻辑:如果属性携带
@NotShowInList注解,直接跳过生成该属性的列表列代码;如果携带@NotEditable注解,直接跳过生成该属性的编辑表单代码即可。
内容的提问来源于stack exchange,提问作者Rad
相关产品推荐
相关产品推荐

