0

我知道有一个asp.net mvc的代码生成示例

Q1:我想知道如何将标准变量(似乎是特定于 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

Q2:对于像下面基于 abp.io 的解决方案中的多项目解决方案,我是否需要创建多个 telosys 项目,每个项目都有一组模板包?如何处理 Telosys 配置文件中不同项目的各种路径 我可能想构建一个 Visual Studio 扩展,该扩展将提取项目文件夹和命名空间并以编程方式修改 telosys 配置文件以匹配。

这是一个开源 asp.net 核心框架abp.io可以有前端的示例(在一个项目中每个):Angular、MVC Razor pages、Blazor、

它支持多个数据库:实体框架、Dapper

它的解决方案结构是这样的:

解决方案结构

解决方案文件的内容是这样的(指向位于不同文件夹中的单个项目文件)

解决方案文件

** Q3:如何有元数据注释以排除列表形式中的属性或将其排除在编辑之外**

4

2 回答 2

1

Q1 答案:

关于“标准变量”,它们并非特定于 Java(仅示例适用于 Java)。您可以根据需要将它们用于任何类型的目标语言。这些变量通常在“templates.cfg”文件中用于定义生成文件所在的文件夹(它们的使用不是强制性的)。

按照惯例 :

  • SRC:生成“源”文件的文件夹
  • RES:生成“资源”文件(配置文件等)的文件夹
  • WEB:任何网络文件(HTML、CSS 等)的文件夹
  • TEST_SRC:单元测试源的文件夹
  • TEST_RES:单元测试资源(配置文件等)的文件夹
  • DOC : 用于文档文件
  • TMP:用于临时文件(生成测试等)

您可以根据需要组织项目结构

C# 的“templates.cfg”示例(仅使用 $SRC):

#--- Models
Entity class                ; ${BEANNAME}.cs                    ; ${SRC}/Models/${BEANNAME}     ; Models/Xxx_cs.vm                  ; *
Entity CreateViewModel      ; Create${BEANNAME}ViewModel.cs     ; ${SRC}/Models/${BEANNAME}     ; Models/CreateXxxViewModel_cs.vm   ; *
Entity UpdateViewModel      ; Update${BEANNAME}ViewModel.cs     ; ${SRC}/Models/${BEANNAME}     ; Models/UpdateXxxViewModel_cs.vm   ; *

#-- Controllers
Entity controller           ; ${BEANNAME}sController.cs         ; ${SRC}/Controllers            ; Controllers/Xxxcontroller_cs.vm       ; *

#-- Views
Index View                  ; Index.cshtml                      ; ${SRC}/Views/Home             ; Views/Home/Index_cshtml.vm            ; 1
List View                   ; List${BEANNAME}View.cshtml        ; ${SRC}/Views/${BEANNAME}s     ; Views/ListXxxView_cshtml.vm       ; *
Create View                 ; Create${BEANNAME}View.cshtml      ; ${SRC}/Views/${BEANNAME}s     ; Views/CreateXxxView_cshtml.vm     ; *
Update View                 ; Update${BEANNAME}View.cshtml      ; ${SRC}/Views/${BEANNAME}s     ; Views/UpdateXxxView_cshtml.vm     ; *
Application Layout          ; _Layout.cshtml                    ; ${SRC}/Views/Shared           ; Views/Shared/_Layout_cshtml.vm        ; 1

Q2 答案:

最简单的方法可能是为每个目标项目创建一个 Telosys 项目(以使每个项目尽可能小)。

但您也可以创建自己的“全局变量”,并在结构复杂的“大项目”中使用它们。

特定变量定义示例(在“telosys-tools.cfg”中):

ProjectVariable.MODULE_APPLICATION    = my-app
ProjectVariable.MODULE_DOMAIN         = my-domaine
ProjectVariable.MODULE_INFRASTRUCTURE = my-infrastructure

“templates.cfg”文件中的用法示例:

${MODULE_INFRASTRUCTURE}/${RES}/db
${MODULE_DOMAIN}/${SRC}/repository
${MODULE_APPLICATION}/${SRC}/handler 
于 2021-10-13T17:10:01.893 回答
0

Q3 答案

当您需要属性的特定信息时,最简单的解决方案是使用“标签”。

您可以根据需要创建任何标签(它只是一个以“#”开头的字符串)。

例如,对模型中的属性使用“#exclude”标签:

 comment : string { #exclude } ;

并在模板文件中使用它:

#if ( ! $attribute.hasTag("exclude") )
use attribute here
#end

请参阅:https ://doc.telosys.org/dsl-model/tags

于 2021-10-13T17:55:17.903 回答