`
izuoyan
  • 浏览: 9222411 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

CodeSmith基础(七)

阅读更多

CodeSmith基础(七)

<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://www.cnblogs.com/Bear-Study-Hard/archive/2005/12/23/303246.html" dc:identifier="http://www.cnblogs.com/Bear-Study-Hard/archive/2005/12/23/303246.html" dc:title="CodeSmith基础(七)" trackback:ping="http://www.cnblogs.com/Bear-Study-Hard/services/trackbacks/303246.aspx" /> </rdf:RDF> -->

本文翻译的内容为CodeSmith控制台指南。

很多人仅仅知道CodeSmith像一个图形应用程序,或者可能是一个Visual Studio的附件,但是通过CodeSmith的控制台应用程序还有好多其他的使用方法。控制台应用程序是很有价值的,因为可以通过它去生成脚本,或者其他一些自动工具。这篇文档的目的就是要告诉你怎样使用它的控制台应用程序并且如何去定义变量和参数。

Basic Usage

大多数情况下是用控制台应用程序来创建一个模板,一个属性文件,然后保存输出的文件。这有一个很好的例子介绍将合并模版的处理过程放到一个过程中,就像使用NAnt工具。

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

1<?xmlversion="1.0"encoding="us-ascii"?>
2<codeSmith>
3<propertySet>
4<propertyname="Accessibility">Public</property>
5<propertyname="ClassName">PersonArray</property>
6<propertyname="ItemType">Person</property>
7<propertyname="ItemValueType">False</property>
8<propertyname="ItemCustomSearch">False</property>
9<propertyname="KeyName">PersonID</property>
10<propertyname="KeyType">int</property>
11<propertyname="IncludeInterfaces">True</property>
12<propertyname="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

1usingSystem;
2
3namespaceEntities
4{
5GeneratedOrderEntity#regionGeneratedOrderEntity
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参数生成的内容在其他部分被修改或手写后很容易重新再次生成而不会产生影响。

1usingSystem;
2
3namespaceInfozerk.AuthServices.UnitTestSuite
4{
5GeneratedOrderEntity#regionGeneratedOrderEntity
6
7
8Order#regionOrder
9/**////<summary>
10///ThisobjectrepresentsthepropertiesandmethodsofaOrder.
11///</summary>

12publicclassOrder
13{
14protectedint_id;
15protectedstring_customerID=String.Empty;
16protectedint_employeeID;
17protectedDateTime_orderDate;
18protectedDateTime_requiredDate;
19protectedDateTime_shippedDate;
20protectedint_shipVia;
21
22--为了简短省略了类的其他部分

参数介绍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

禁止生成器版权信息。

分享到:
评论

相关推荐

    CodeSmith基础与应用

    CodeSmith基础与应用实例(网页资料打包)

    CodeSmith 基础教程 word版

    本文档是一个关于 CodeSmith 的基础教程,针对的是 CodeSmith Professional v5.1.3.8510 版本,以 C# 为例进行说明。 首先,我们需要对 CodeSmith 进行必要的设置,以便它能够正确处理中文字符。在工具的选项中,...

    CodeSmith使用基础教程

    本教程将带你深入理解CodeSmith的基础用法,通过一系列详细的网页教程,帮助你掌握其核心概念和功能。 首先,我们从“CodeSmith使用基础教程 一 — 模板”开始。模板是CodeSmith的核心,它定义了生成代码的结构和...

    codesmith nettiers-2.3.1.zip codesmith 模板

    codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip codesmith 模板codesmith nettiers-2.3.1.zip...

    CodeSmith+注册码(注册机)

    CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码(注册机)CodeSmith+注册码...

    CodeSmith基础.pdf

    CodeSmith是一款基于模板的代码生成器,它允许开发人员使用类似于数据库查询语言的标记语言来生成代码。CodeSmith提供了一系列模板,可以用来生成如C#、C++、Java等语言的代码,尤其在生成数据库访问层代码方面,...

    CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf

    CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf CodeSmith教程[全].pdf ...

    MySql数据库CodeSmith模板

    这大大减少了手动编写这些基础代码的时间。 CodeSmith支持使用C#语法作为模板语言,使得模板的编写更为直观和强大。你可以利用它提供的各种内置函数和变量,如数据库表信息、字段信息等,来动态生成代码。 总的来...

    CodeSmith

    总的来说,CodeSmith是一个高效能的代码生成工具,通过与数据库的交互和模板引擎,能够帮助开发者快速构建C#项目的基础架构。其丰富的配置选项和多样的运行方式适应了不同开发环境的需求,是提升开发效率的得力助手...

    CodeSmith 6.0 + 序列号

    CodeSmith是一款强大的代码生成工具,尤其对于程序员和开发团队来说,它能显著提高开发效率,减少重复编写基础代码的工作量。在标题中提到的"CodeSmith 6.0 + 序列号",指的是该软件的第六个主要版本,并且提供了一...

    CodeSmith初学者教程

    通过阅读和实践,你可以掌握CodeSmith的基础操作,并逐渐提升到高级应用。 总结,CodeSmith是一个强大的代码生成工具,通过学习和熟练运用,开发者能提高工作效率,降低出错率,专注在更重要的业务逻辑和创新上。...

    codesmith入门

    在codesmith中,模板是生成代码的基础,它们可以是预定义的,也可以由用户自行创建。预定义模板涵盖了如.NET集合类型和存储过程生成等功能。用户通过CodeSmith Studio.exe创建和编辑模板,而CodeSmith Explorer.exe...

    简单的CodeSmith模板

    "简单的CodeSmith模板"这个主题意味着我们将探讨如何创建一个基础的CodeSmith模板,以理解其工作原理和基本语法。 首先,让我们深入了解CodeSmith模板。模板是CodeSmith的核心,它是由CST(CodeSmith Template)...

    CodeSmith 4.1 Templates.rar

    此外,CodeSmith还支持模板继承,你可以创建一个基础模板,然后其他模板继承这个基础模板,只关注差异部分,这样维护起来更为方便。 "CodeSmith 4.1 Templates"压缩包内的文件可能是各个特定功能的模板文件,比如...

    CodeSmith生成SpringBoot模板

    总的来说,利用CodeSmith生成SpringBoot模板结合MyBatisPlus,可以有效地减少重复编码工作,提升开发效率,让开发者更专注于业务逻辑的实现,而不是基础代码的编写。通过熟练掌握这一技巧,可以为你的项目开发带来极...

    Java 代码生成器CodeSmith是一个好工具

    CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...

    CodeSmith代码生成器

    CodeSmith是一款强大的代码生成工具,尤其在提升软件开发效率方面有着显著的作用。它允许开发者通过模板语言来定制自己的代码生成规则,从而自动化地创建出符合特定项目需求的源代码。这款工具广泛应用于国内的开发...

    CodeSmith 生成工具 6.5 (可生成Nhibernate)

    CodeSmith是一款强大的代码生成工具,尤其在快速开发领域有着广泛的应用。版本6.5是它的一个重要里程碑,其中包含了对Nhibernate框架的支持,这使得开发者能够更高效地生成与Nhibernate配合的实体类和数据访问层代码...

    解决CodeSmith 8.0生成mysql实体没有字段注释和表注释,亲测好用

    CodeSmith是一款强大的代码生成工具,尤其适用于快速生成数据库相关的实体模型、数据访问层以及业务逻辑层代码。在本文中,我们将深入探讨如何解决在使用CodeSmith 8.0时遇到的MySQL实体没有字段注释和表注释的问题...

Global site tag (gtag.js) - Google Analytics