作者:James Avery 翻译:lucentoff
出处:http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx
声明:版权属原作者所有,转载请注明出处!
CodeSmith
CodeSmith是一个基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成代码或文本。CodeSmith不像其它许多代码生成工具,它不要求你掌握特殊的应用程序设计或体系结构。利用CodeSmith可以生成简单的强类型集合,也可以生成完整的应用程序。
在创建应用程序时,无论是编写数据访问代码还是创建定制集合,你经常会发现自己在重复某些工作。这时候CodeSmith就特别有用,因为你可以编写模板来自动完成重复性任务,不但提高了生产力,而且自动完成了烦琐的任务。
CodeSmith带有许多模板,包括所有.NET集合类型的模板以及生成存储过程的模板,但它真正强大的功能在于创建定制模板。下面我就快速介绍一下创建定制模板。
创建定制模板<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
CodeSmith模板是简单的文本文件,可以用任何文本编辑器创建,只需保存成以.cst为扩展名的文件即可。我将要创建的样例模板接受一个字符串并且创建以该字符串为名的类。首先是添加模板头,它声明了模板语言、目标语言以及模板的简要描述:
?? TargetLanguage="C#"
?? Description="Car Template" %>
接下来是声明模板每次运行时要指定的属性。我要使用一个字符串类型的属性,其声明如下:
????Description="Class Name" %>
当模板运行时,ClassName属性将出现在CodeSmith属性窗口中。下一步是创建实际的模板体,非常类似于用ASP.NET编写代码,如图3所示。
图3 定制模板与代码输出
可以看到,模板将接受字符串输入并产生一个以它为类名的单件类。模板体中使用的开始和结束定界符标记(和%>)与ASP.NET相同。在这个模板中,我只是简单地插入了属性值,但你可以在定界符标记内使用任何类型的.NET代码。一旦模板完成,可以通过双击把它加载到CodeSmith中或者从CodeSmith应用程序打开它,如图4所示。
图4 打开模板文件
可以看到,左边的属性是我在模板中声明的。如果输入“SingletonClass”作为类名,然后点击“Generate(生成)”按钮,就会生成如图3底部所示的类。
CodeSmith使用起来比较容易,正确运用会获得很好的效果。代码生成应用程序最常用的功能之一是生成数据访问层代码。CodeSmith包括一个专门的程序集叫作SchemaExplorer,它可用于生成数据表、存储过程或几乎任何其它SQL Server?对象模板。
CodeSmith概览
CodeSmith是一个基于模板的代码生成器免费软件,它可以生成任何基于ASCII的编程语言代码。生成的代码可以使用属性进行定制。属性可以是任何具有设计器的.NET对象(大多数.NET内置类型已经有设计器),也可以是一个允许你从结果中有条件地添加或移除代码的简单的boolean 属性,或是一个对象,例如能够访问数据库表信息的TableSchema对象(包括在SchemaExplorer中)。CodeSmith完全可扩展,它允许用户创建定制属性类型。CodeSmith中包括多个定制属性类型的例子,例如,定制一个允许选择XML文件(使用XmlSerializer可将其反序列化到对象中)的属性类型。CodeSmith还允许用户在模板中引用和调用指定的外部程序集并且允许从外部程序集的类生成模板。
CodeSmith的语法与ASP.NET几乎相同。因此如果你熟悉ASP.NET ,那么应该会很快理解模板语法。你可以在模板中使用C#、VB.NET或JScript.NET语言,并且模板可以输出任何基于ASCII的语言。
利用CodeSmith Explorer可以查看指定文件夹中所有的模板,并且可以将模板拖放到任何支持拖放文本的目标。你也可以在Windows资源管理器中双击执行模板文件。CodeSmith Explorer窗口还可以嵌入到Visual Studio .NET 2003 中作为一个工具窗口,让你可以方便地访问自己的模板。
CodeSmith有几种成批生成代码的方式。CodeSmith包括有一个用于Visual Studio .NET 2003的定制工具(Custom Tool),它包括基于多个属性集的代码生成模板。这个定制工具允许CodeSmith模拟范型,可以通过添加额外的属性集为一个模板创建多个专门的模板实例。当定制工具再次运行时,对模板的改变将反映到任何模板的实例中。CodeSmith中包括多种优化的集合模板(例如ArrayList、DictionaryList、Hashtable、Idictionary、Ilist、SortedList和Stack),利用这些模板可以创建避免装箱和拆箱的强类型集合,它们的性能要比.NET Framework 中的集合类型高1500%。CodeSmith还包括一个基于控制台的版本,它与定制工具相同,只不过是从命令行运行并且可以包括在任何编译和连接过程中。
CodeSmith包括一个名为SchemaExplorer的程序集,利用它可以访问几乎所有的数据库概要(schema)细节。访问这种信息让你能够生成各种代码,例如存储过程、类型DataSet、业务对象、表示层代码或任何其它基于数据库概要信息的代码。
CodeSmith作为一个免费软件发布,其目的在于建立一个强大的用户和模板社群。我希望最终能使程序员少做一些重复性的烦人工作! 作为交换,我希望收到反馈建议、错误报告、教程、文档以及一些有用的模板以使我们的生活更加轻松!
分享到:
相关推荐
Codesmith ADO.NET 模版Codesmith ADO.NET 模版Codesmith ADO.NET 模版Codesmith ADO.NET 模版Codesmith ADO.NET 模版Codesmith ADO.NET 模版
参照nhibernate模板文件和ibatis.net教程相关示例制作的codesmith模板文件,C#环境
一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本,与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成包括简单的强...
CodeSmith 是一种基于模板的代码生成工具,它使用类似于ASP.NET的语法来生成任意类型的代码或文本,从而减少重复编码的劳动量,提高效率。与其他许多代码生成工具不同,CodeSmith不要求您订阅特定的应用程序设计或...
两个不同的转换器工具,ASP.NET 版本转换器(Version Switcher)和 Visual Studio .NET 项目转换器(Project Converter) Regulator:生成正则表达式工具 .NET Reflector:程序集分析检查工具 注:还有一个工具由于...
自己想简化EF代码,写了一个模板,CodeSmith
C#.net 使用NHibernate做持久层,spring.net 进行DI,Codesmith作为代码生成工具
CodeSmith .net 2.0 自动生成三层模板
只需要一个数据库生成 类似java下hibernate框架结构 HSession进行操作 网站后台(带功能) 生成三层结构包括一些常用的方法(直接调用)反射工厂泛型接口
两个不同的转换器工具,ASP.NET 版本转换器(Version Switcher)和 Visual Studio .NET 项目转换器(Project Converter) Regulator:生成正则表达式工具 .NET Reflector:程序集分析检查工具 注:还有一个工具由于...
asp.net CodeSmith 三层模板 三层 自动生成三层代码(数据访问层DAL,业务逻辑层BLL,实体类Model)
• NUnit:编写单元测试的工具 工具下载地址:http://www.vckbase.com/tools/viewtools.asp?id=175<br>• NDoc:创建代码文档的工具 • NAnt:生成解决方案的工具 • CodeSmith:代码生成工具 • ...
asp.net codeSmith三层代码生成模板
CodeSmith 代码生成器是一个软件开发工具来帮助你得到你的工作做得更快。从技术上讲它是一个模板驱动的源代码生成器,它可以自动的常见应用程序源代码创建的任何语言(C#,Java和VB,PHP,ASP.NET,SQL等)。...
Spring.net EF CodeSmith7 log4net ,开发环境;vs2012 数据库:sql2008R2
.net工厂模式架构CodeSmith 自己的项目中使用的,很方便,可以自己修改!
.net 三层架构模板,自动生成实体层、数据访问层、业务逻辑层
MVC+企业库,NHibernate等,实测可用
开发工具:Visual Studio .NET 2005 + Server2005 项目描述:OA办公系统基于B/S架构设计。 包括文件管理、共享下载、消息管理、公文流传、通知管理、内部论坛、人力资源管理、资产管理 等。 文件管理:接收文件 传送...
CodeSmith 是一种基于模板的代码生成工具,它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同,CodeSmith 不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith,可以生成...