摘要: 在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 阅读(5795) 评论(6) 推荐(0) 编辑
摘要: Progress对象可以在CodeSmith生成代码时给用户显示一个进度条,当生成代码的时间很长时非常有用。如果你使用的是CodeSmith Explorer,进度条将显示在Generate按钮的左边: 如果使用的是CodeSmith Studio,进度条将显示在状态栏上: 使用Progress和在WinForm中使用进度条差不多,需要设置它的最大值和步长: this.Progress.Max... 阅读全文
posted @ 2005-12-28 18:34 TerryLee 阅读(4048) 评论(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 阅读(4302) 评论(1) 推荐(0) 编辑
摘要: 在CodeSmith中,如果生成的代码是SQL脚本,则可以在生成代码完成时自动执行生成的代码,也就是在生成的SQL脚本的同时在数据库中创建新的对象。 用BaseTemplates.ScriptUtility对象提供ExecuteScript方法可以实现,如果想在生成代码完成后立即执行生成的脚本,可以很方便的通过重载OnPostRender来实现。 在使用之前,先添加对下列程序集的引用: 看下面的... 阅读全文
posted @ 2005-12-28 18:30 TerryLee 阅读(7469) 评论(1) 推荐(1) 编辑
摘要: 最近跟同事在研究CodeSmith,感觉中文文档是少之又少,所以我们自己写(翻译)了一些文档,总结如下,希望对使用CodeSmith的朋友有所帮助。 等整个文档完成后,我会做成PDF文件供大家下载。 阅读全文
posted @ 2005-12-28 09:15 TerryLee 阅读(83308) 评论(54) 推荐(35) 编辑
摘要: 如果你需要提供一个复杂的组合用户界面来输入元数据,这时就要添加设计器的支持。换句话说,除此之外没有别的办法来输入你自定义的元数据类型。添加设计器的支持,首先你要创建一个Editor作为自定义的类型,一个Editor其实就一个继承于.NET 中的System.Drawing.Design.UITypeEditor类的子类。 安装CodeSmith后在,在C:\Program File\CodeSmi... 阅读全文
posted @ 2005-12-28 08:54 TerryLee 阅读(4974) 评论(1) 推荐(0) 编辑
摘要: CodeSmith在执行模版时通过调用一些API来完成的,主要经过了以下这几步的操作: l 编译一个模版 l 显示编译错误信息 l 创建一个新的模版实例 l 用元数据填充模版 l 输出结果 下面这段代码显示了这些操作: CodeTemplateCompiler compiler = new CodeTemplateC... 阅读全文
posted @ 2005-12-28 08:51 TerryLee 阅读(4887) 评论(3) 推荐(0) 编辑
摘要: 在CodeSmith中,CodeTemplate.Render方法是在模版执行完成进行模版输出时执行,你可以通过重载CodeTemplate.Render方法来修改CodeSmith输出时的事件处理。例如:你可以修改模版输出时的方式来代替现在默认的方式,下面这段代码展示了在保持CodeSmith默认的窗口显示的同时,把结果输出到两个不同的文件。 1 2 3This template demo... 阅读全文
posted @ 2005-12-28 08:46 TerryLee 阅读(4440) 评论(2) 推荐(0) 编辑
摘要: 在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。 OutputFileCodeTemplate主要做两件事情: 1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件; 2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去。... 阅读全文
posted @ 2005-12-28 08:44 TerryLee 阅读(6937) 评论(6) 推荐(0) 编辑
摘要: 在使用CodeSmith进行代码生成的时候,你可能需要在子模版和父模版之间共享属性。比如,写一个基于数据库生成代码的模版,在每个模版里面都定义了一个名为Server的属性。当你在父模版中使用此属性时,它的值只对父模版起作用。想要设置此值到子模版,可以在父模版中使用CopyPropertiesTo方法,当在父模版中使用此属性时,它的值会发送到子模版中去。下面这段代码展示了如何使用该方法: //... 阅读全文
posted @ 2005-12-28 08:42 TerryLee 阅读(3913) 评论(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 阅读(4746) 评论(1) 推荐(0) 编辑
摘要: 用CodeSmith生成可变化的代码,其实是先利用CodeSmith生成一个基类,然后自定义其它类继承于该类。当我们重新生成基类时CodeSmith不要接触继承的子类中的代码。看下面的这段模版脚本: class { m_; public ( ) { m_ = }} 执行该模版并输入如下数据: 该模版生成的代码可能如下: 1class Accou... 阅读全文
posted @ 2005-12-28 08:33 TerryLee 阅读(4540) 评论(1) 推荐(0) 编辑