随笔分类 -  [13]  代码生成

摘要:国内写代码生成器的不少,可以说很多公司都有自己的代码生成器,好用的却不多,可定制性不强,始终不及CodeSmith或MyGeneration。最近园子里也发了不少的代码生成器,其中henry的CodeFactory的VS插件很值得推荐。我个人最近也在写一个代码生成器,开始想写一个能满足公司项目基本要求的就可以了,后来觉的还是通用的比较好,于是就有了Smart Code。看到这么多朋友都发了代码生成器,我也提前show一把,不过我这个目前还在开发中,希望这个月底可以发布,到时将会提供下载。 1.整体界面风格类似于Visual Studio。 2.完全基于自定义的模板引擎,模板使用ASP.NET的标记和C#语法进行编写。 3.支持属性的自定义,以及生成界面控件的配置。 4.可以生成多种类型的项目,并且支持自定义项目类型。 ...... 阅读全文
posted @ 2007-12-04 00:29 TerryLee 阅读(14681) 评论(132) 推荐(3) 编辑
摘要:从David Hayden那里获知,CodeProject上的一个开源代码生成器SmartCode,对于不想花钱买CodeSmith的朋友来说,是个不错的选择,SmartCode完全基于模版代码生成(我一直认为基于模版的代码生成才是正道),它通过读取数据库Schema,可以为每张表或者每一个字段设置生成属性,选择字段对应的页面控件等。 SmartCode Studio主界面如下 阅读全文
posted @ 2006-11-25 19:56 TerryLee 阅读(24163) 评论(62) 推荐(2) 编辑
摘要:CodeSmith 4.0 正式版已经发布。新版本的CodeSmith 4.0 完全基于.NET2.0,在安装之前你需要安装.NET Framework 2.0。 新功能点如下 阅读全文
posted @ 2006-11-15 12:57 TerryLee 阅读(7605) 评论(6) 推荐(0) 编辑
摘要:今天收到邮件,CodeSmith 4.0 Beta 2 已经发布了,并且提供了下载,在4.0中提供了大量的模版,包括.NET下项目分层模版,Nhibernate模版,Enterprise Library模版等。 下载地址 Professional: http://www.codesmithtools.com/download/codesmithprofessional-40-beta2.msi Standard: http://www.codesmithtools.com/download/codesmithstandard-40-beta2.msi Zip: http://www.codesmithtools.com/download/codesmith-40-beta2.zip 阅读全文
posted @ 2006-10-19 19:34 TerryLee 阅读(7519) 评论(28) 推荐(0) 编辑
摘要:在CodeSmith中为了实现对数据库中表字段的选择和针对字段来设置属性,决定用XML文件作为中间数据的交换方式,在CodeSmith中读取数据库对象的信息不再使用SchemaExplorer来读取,而是转为直接对XML文件的读取。 这两天做了一个配置工具,先发个界面上来。 阅读全文
posted @ 2006-01-09 17:56 TerryLee 阅读(4184) 评论(9) 推荐(0) 编辑
摘要:和几位同事经过一周时间的努力,基本上对CodeSmith的功能有了一个全面的了解。在学习的过程中,我们也做了部分的翻译和对CodeSmith使用技巧做了一些总结。我整理成一个PDF文档,提供给大家下载,希望对使用CodeSmith进行代码生成的朋友有所帮助。文章的内容:CodeSmith基础8篇,CodeSmith使用技巧15篇,CodeSmith API翻译1篇。所有文章的内容都是以Blog的形式写的,有疏漏和错误之处,还请大家多多包涵。另外,希望大家在网络上转载时能够保留作者的姓名! 阅读全文
posted @ 2006-01-04 18:32 TerryLee 阅读(18574) 评论(234) 推荐(3) 编辑
摘要:大家都知道,在CodeSmith中现在没有提供选择字段的功能,我们在生成一个List页面时,不可能对整张表的所有字段都生成,所以有必要去实现选择字段的功能。我总结了一下,大体上有以下几种实现思路。 阅读全文
posted @ 2005-12-30 10:49 TerryLee 阅读(4149) 评论(8) 推荐(0) 编辑
摘要:在CodeSmith中,以下几个快捷键有助于我们快速输入。 1.Ctrl + Shift + C 在空行上,按下Ctrl + Shift + C后将会录入一个代码块。 2.Ctrl + Shift + Q 按下Ctrl + Shift + Q后录入一个脚本块。 3.Ctrl + Shift + V 对代码块反转,如有下面这样一行代码: 在两个大括号之间按下Ctrl + Shift + ... 阅读全文
posted @ 2005-12-28 18:36 TerryLee 阅读(5805) 评论(6) 推荐(0) 编辑
摘要:Progress对象可以在CodeSmith生成代码时给用户显示一个进度条,当生成代码的时间很长时非常有用。如果你使用的是CodeSmith Explorer,进度条将显示在Generate按钮的左边: 如果使用的是CodeSmith Studio,进度条将显示在状态栏上: 使用Progress和在WinForm中使用进度条差不多,需要设置它的最大值和步长: this.Progress.Max... 阅读全文
posted @ 2005-12-28 18:34 TerryLee 阅读(4049) 评论(2) 推荐(1) 编辑
摘要:在CodeSmith中使用CodeTemplateInfo可以获取当前模版的一些信息: 属性 返回值 CodeBehind Gets the full path to the code-behind file for the template (or an empty string if there is no code-behind file). ContentHash... 阅读全文
posted @ 2005-12-28 18:31 TerryLee 阅读(4305) 评论(1) 推荐(0) 编辑
摘要:在CodeSmith中,如果生成的代码是SQL脚本,则可以在生成代码完成时自动执行生成的代码,也就是在生成的SQL脚本的同时在数据库中创建新的对象。 用BaseTemplates.ScriptUtility对象提供ExecuteScript方法可以实现,如果想在生成代码完成后立即执行生成的脚本,可以很方便的通过重载OnPostRender来实现。 在使用之前,先添加对下列程序集的引用: 看下面的... 阅读全文
posted @ 2005-12-28 18:30 TerryLee 阅读(7470) 评论(1) 推荐(1) 编辑
摘要:最近跟同事在研究CodeSmith,感觉中文文档是少之又少,所以我们自己写(翻译)了一些文档,总结如下,希望对使用CodeSmith的朋友有所帮助。 等整个文档完成后,我会做成PDF文件供大家下载。 阅读全文
posted @ 2005-12-28 09:15 TerryLee 阅读(83318) 评论(54) 推荐(35) 编辑
摘要:如果你需要提供一个复杂的组合用户界面来输入元数据,这时就要添加设计器的支持。换句话说,除此之外没有别的办法来输入你自定义的元数据类型。添加设计器的支持,首先你要创建一个Editor作为自定义的类型,一个Editor其实就一个继承于.NET 中的System.Drawing.Design.UITypeEditor类的子类。 安装CodeSmith后在,在C:\Program File\CodeSmi... 阅读全文
posted @ 2005-12-28 08:54 TerryLee 阅读(4977) 评论(1) 推荐(0) 编辑
摘要:CodeSmith在执行模版时通过调用一些API来完成的,主要经过了以下这几步的操作: l 编译一个模版 l 显示编译错误信息 l 创建一个新的模版实例 l 用元数据填充模版 l 输出结果 下面这段代码显示了这些操作: CodeTemplateCompiler compiler = new CodeTemplateC... 阅读全文
posted @ 2005-12-28 08:51 TerryLee 阅读(4889) 评论(3) 推荐(0) 编辑
摘要:在CodeSmith中,CodeTemplate.Render方法是在模版执行完成进行模版输出时执行,你可以通过重载CodeTemplate.Render方法来修改CodeSmith输出时的事件处理。例如:你可以修改模版输出时的方式来代替现在默认的方式,下面这段代码展示了在保持CodeSmith默认的窗口显示的同时,把结果输出到两个不同的文件。 1 2 3This template demo... 阅读全文
posted @ 2005-12-28 08:46 TerryLee 阅读(4443) 评论(2) 推荐(0) 编辑
摘要:在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。 OutputFileCodeTemplate主要做两件事情: 1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件; 2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去。... 阅读全文
posted @ 2005-12-28 08:44 TerryLee 阅读(6941) 评论(6) 推荐(0) 编辑
摘要:在使用CodeSmith进行代码生成的时候,你可能需要在子模版和父模版之间共享属性。比如,写一个基于数据库生成代码的模版,在每个模版里面都定义了一个名为Server的属性。当你在父模版中使用此属性时,它的值只对父模版起作用。想要设置此值到子模版,可以在父模版中使用CopyPropertiesTo方法,当在父模版中使用此属性时,它的值会发送到子模版中去。下面这段代码展示了如何使用该方法: //... 阅读全文
posted @ 2005-12-28 08:42 TerryLee 阅读(3915) 评论(3) 推荐(0) 编辑
摘要:CodeSmith允许我们存储元数据在XML文件中,然后在执行模版时直接打开XML文件填写到属性面板中。 1.XML Property With a Schema 1 2 6 7 8 9 10 11 12 13 14 15 16 ... 阅读全文
posted @ 2005-12-28 08:40 TerryLee 阅读(4749) 评论(1) 推荐(0) 编辑
摘要:用CodeSmith生成可变化的代码,其实是先利用CodeSmith生成一个基类,然后自定义其它类继承于该类。当我们重新生成基类时CodeSmith不要接触继承的子类中的代码。看下面的这段模版脚本: class { m_; public ( ) { m_ = }} 执行该模版并输入如下数据: 该模版生成的代码可能如下: 1class Accou... 阅读全文
posted @ 2005-12-28 08:33 TerryLee 阅读(4545) 评论(1) 推荐(0) 编辑
摘要:SchemaExplorer允许我们获取数据库中一些对象的信息。如果你使用的是SQL Server2000数据库,你可以通过扩展属性获取很多对象的有用的信息。 阅读全文
posted @ 2005-12-27 14:31 TerryLee 阅读(5280) 评论(0) 推荐(0) 编辑