随笔- 785
文章- 9
评论- 171
阅读-
123万
随笔分类 - CodeSmith实用技巧系列
CodeSmith实用技巧(十五):使用快捷键
摘要:在CodeSmith中,以下几个快捷键有助于我们快速输入。 1.Ctrl + Shift + C 在空行上,按下Ctrl + Shift + C后将会录入一个代码块。 2.Ctrl + Shift + Q 按下Ctrl + Shift + Q后录入一个脚本块。 3.Ctrl + Shift + V 对代码块反转,如有下面这样一行代码: 在两个大括号之间按下Ctrl + Shift + ...
阅读全文
CodeSmith实用技巧(十四):使用Progress对象
摘要:Progress对象可以在CodeSmith生成代码时给用户显示一个进度条,当生成代码的时间很长时非常有用。如果你使用的是CodeSmith Explorer,进度条将显示在Generate按钮的左边: 如果使用的是CodeSmith Studio,进度条将显示在状态栏上: 使用Progress和在WinForm中使用进度条差不多,需要设置它的最大值和步长: this.Progress.Max...
阅读全文
CodeSmith实用技巧(十三):使用CodeTemplateInfo对象
摘要:在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...
阅读全文
CodeSmith实用技巧(十二):自动执行SQL脚本
摘要:在CodeSmith中,如果生成的代码是SQL脚本,则可以在生成代码完成时自动执行生成的代码,也就是在生成的SQL脚本的同时在数据库中创建新的对象。 用BaseTemplates.ScriptUtility对象提供ExecuteScript方法可以实现,如果想在生成代码完成后立即执行生成的脚本,可以很方便的通过重载OnPostRender来实现。 在使用之前,先添加对下列程序集的引用: 看下面...
阅读全文
CodeSmith实用技巧(十一):添加设计器的支持
摘要:如果你需要提供一个复杂的组合用户界面来输入元数据,这时就要添加设计器的支持。换句话说,除此之外没有别的办法来输入你自定义的元数据类型。添加设计器的支持,首先你要创建一个Editor作为自定义的类型,一个Editor其实就一个继承于.NET 中的System.Drawing.Design.UITypeEditor类的子类。 安装CodeSmith后在,在C:\Program File\CodeSm...
阅读全文
CodeSmith实用技巧(十):通过编程执行模版
摘要:CodeSmith在执行模版时通过调用一些API来完成的,主要经过了以下这几步的操作: l 编译一个模版 l 显示编译错误信息 l 创建一个新的模版实例 l 用元数据填充模版 l 输出结果 下面这段代码显示了这些操作: CodeTemplateCompiler compiler = new CodeTemplate...
阅读全文
CodeSmith实用技巧(九):重载Render方法来控制输出
摘要:在CodeSmith中,CodeTemplate.Render方法是在模版执行完成进行模版输出时执行,你可以通过重载CodeTemplate.Render方法来修改CodeSmith输出时的事件处理。例如:你可以修改模版输出时的方式来代替现在默认的方式,下面这段代码展示了在保持CodeSmith默认的窗口显示的同时,把结果输出到两个不同的文件。 1 2 3This template demon...
阅读全文
CodeSmith实用技巧(八):生成的代码输出到文件中
摘要:在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。 OutputFileCodeTemplate主要做两件事情: 1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件; 2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去。...
阅读全文
CodeSmith实用技巧(七):从父模版拷贝属性
摘要:在使用CodeSmith进行代码生成的时候,你可能需要在子模版和父模版之间共享属性。比如,写一个基于数据库生成代码的模版,在每个模版里面都定义了一个名为Server的属性。当你在父模版中使用此属性时,它的值只对父模版起作用。想要设置此值到子模版,可以在父模版中使用CopyPropertiesTo方法,当在父模版中使用此属性时,它的值会发送到子模版中去。下面这段代码展示了如何使用该方法: // ...
阅读全文
CodeSmith实用技巧(六):使用XML 属性
摘要:CodeSmith允许我们存储元数据在XML文件中,然后在执行模版时直接打开XML文件填写到属性面板中。 1.XML Property With a Schema 1 2 6 7 8 9 10 11 12 13 14 15 16 ...
阅读全文
CodeSmith实用技巧(五):利用继承生成可变化的代码
摘要:用CodeSmith生成可变化的代码,其实是先利用CodeSmith生成一个基类,然后自定义其它类继承于该类。当我们重新生成基类时CodeSmith不要接触继承的子类中的代码。看下面的这段模版脚本: class { m_; public ( ) { m_ = }} 执行该模版并输入如下数据: 该模版生成的代码可能如下: 1class Accoun...
阅读全文
CodeSmith实用技巧(四):使用扩展属性
摘要:SchemaExplorer允许我们获取数据库中一些对象的信息。如果你使用的是SQL Server2000数据库,你可以通过扩展属性获取很多对象的有用的信息。例如:SQL Server定义了一个扩展属性来标识表中的唯一标识字段,在模版中可以这样写: Identity Field = CodeSmith定义的扩展属性包括table columns, view columns, 和 command...
阅读全文
CodeSmith实用技巧(三):使用FileDialogAttribute
摘要:使用FileDialogAttribute可以设置FileNameEditor中的属性,基本成员如下: 属性 描述 默认值 FileDialogType Save or Open FileDialogType.Save Filter Filter string for file extensions All Files (*.*)|*.* Title Dialo...
阅读全文
CodeSmith实用技巧(二):使用FileNameEditor
摘要:FileNameEditor类给我们提供了在CodeSmith属性面板中弹出打开或保存文件对话框的方式,在使用时,首先在模版中得添加对程序集CodeSmith.CustomProperties的引用。然后就可以在模版中定义一个属性来使用FileNameEditor: 12425 当我们执行该模版时,在属性面板中同样显示为一个按钮: 单击该按钮,弹出一个保存文件的对话框: 我们也可以通过...
阅读全文
CodeSmith实用技巧(一):使用StringCollection
摘要:StringCollection提供了一种集合的输入方式,在代码中,可以用Array的方式来引用。在使用这个类之前,在模版中我们必须添加对CodeSmith.CustomProperties程序集的引用: 添加完程序集之后,我们就可以使用StringCollection在脚本块中定义一个属性: 执行该模版时,这个属性将在属性窗体中显示为一个按钮: 单击按钮,将会弹出一个String Col...
阅读全文