CodeSmith的控制台命令

首先我们要确定完成一个什么样的模版,为这个模板创建一个什么样的XML属性文件。XML属性文件提供在执行模版是需要的各个属性。生成一个属性文件最简单的方法是在CodeSmith Explorer中打开一个模版,填写属性,点击生成按钮generate,然后再点击Save Property Set XML按钮。这个按钮会在点击完生成按钮后找到,在Save OutputCopy Output按钮旁边。然后系统提示输入保存XML属性文件的文件名,下面看一个ArrayList.cst模版创建的XML属性文件。CodeSmith Explorer会更简便。

 1 <? xml version="1.0" encoding="us-ascii" ?>
 2 < codeSmith >
 3              < propertySet >
 4                          < property  name ="Accessibility" > Public </ property >
 5                          < property  name ="ClassName" > PersonArray </ property >
 6                          < property  name ="ItemType" > Person </ property >
 7                          < property  name ="ItemValueType" > False </ property >
 8                          < property  name ="ItemCustomSearch" > False </ property >
 9                          < property  name ="KeyName" > PersonID </ property >
10                          < property  name ="KeyType" > int </ property >
11                          < property  name ="IncludeInterfaces" > True </ property >
12                          < property  name ="IncludeNamespaces" > False </ property >
13              </ propertySet >
14 </ codeSmith >

就像看到的一样,也可以手动创建这个文件,但是使用

现在我们有了这个XML文件,我们继续看一下如何去执行这个模版并是用控制台工具保存结果。首先我们需要是用/template参数去声明我们要是用的模版,像这样:

C:/Program Files/CodeSmith/v3.0>cs /template:Samples/Collections/ArrayList.cst

在这个例子中我们使用了ArrayList.cst模版,它存储在本地的Samples/Collections文件夹下。下一步我们要去声明我们在最后一步需要创建的XML文件,我们是用/propertyset参数去实现。

C:/Program Files/CodeSmith/v3.0>cs /template:Samples/Collections/ArrayList.cst 
/propertyset:PersonArray.xml

这个/property参数用来指定我们的XML属性文件。最后一个我们需要用的参数是/output参数,用来指定输出怎样被保存。

C:/Program Files/CodeSmith/v3.0>cs /template:Samples/Collections/ArrayList.cst
/propertyset:PersonArray.xml /out:test.cs

使用/out参数指定将结果输出到一个叫test.cs文件中保存。执行这个命令后,模板将开始运行,使用属性文件将结果输出到test.cs文件保存。

这是大多数情况下有效使用控制台。

 

Merging Output

在各种代码生成中最大的挑战就是将生成的代码和开发人员编写或修改的代码区分开。控制台对这个问题提供了一个有效的独特的解决方案,使用一个指定的参数在当前已存在的代码文件中需要将模板生成的代码添加的地方指定一块区域。

下面是一个简单的代码文件,包含了我们要添加生成代码的区域。我们的目标是将DatabaseSchema/BusinessObject.cst模版生成的代码添加到类文件的GeneratedOrderEntity区域中。和上一个例子一样,使用CodeSmith console控制台应用程序执行这个模版,但是这次要使用另一个参数merge 

1 using  System;
2
3 namespace  Entities
4 {
5      #region GeneratedOrderEntity
6 
7
8      #endregion
  
9}

 

 C:/Program Files/CodeSmith/v3.0>cs /template:Samples/DatabaseSchema/BusinessObject.cst
/propertyset:OrderEntity.xml /out:OrderEntity.cs /merge:InsertRegion=
"RegionName=
Sample Generated Region;Language=C#;"

使用merge参数我们可以指定区域的名称,在这个例子中是GeneratedOrderEntity,然后控制台应用程序将执行模版,并将结果添加到这个区域中。我们来看一下执行完这个指令后生成的代码。就像看到的一样,Order类被添加到了我们指定的区域中。在代码文件中使用merge参数生成的内容在其他部分被修改或手写后很容易重新再次生成而不会产生影响。

 1 using  System;
 2
 3 namespace  Infozerk.AuthServices.UnitTestSuite
 4 {
 5      #region GeneratedOrderEntity
 6      
 7
 8      Order

 

 

参数介绍Parameter Reference

 

Specifying Output

/out:<file>

指定从模版创建的输出文件的名称。

/out:default

指定这个文件被默认保存成模版是用的名称。

/merge:<mergetype>=<init>

指定模版输出的区域。可以简写为/m

 

Specifying Input

/template:<file>

选择要执行的模版,简写为/t

/propertyset:<file>

生成代码时需要使用的XML属性文件。简写为/p

 

Compiler Options

/debug[+|-]

指定模版需要包含的调试信息。(允许在运行模版时进行调试)

/tempfiles[+|-]

指定保留临时文件。(如果在临时文件上调试也可以)

 

Miscellaneous

/help

显示帮助信息。

/nologo

禁止生成器版权信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值