随笔分类 - Code Smith

摘要:SqlServer CodeSmith csbigint Int64 Int64binary Binary Sy... 阅读全文
posted @ 2007-04-17 15:31 chinaifne 阅读 (343) | 评论 (0) 编辑
摘要:基础模版类类型描述: Batch OutputFileCodeTemplate 模版通过继承此类能够在生成过程中把他们的输出保存到文件中 ScriptError 在脚本执行中出现一个错误ScriptErrorCollection ScriptResult 一个脚本的运行结果包含一些已经发生的错误ScriptUtility 这个类能用来在数据库上执行Sql脚本。Sq... 阅读全文
posted @ 2007-04-17 15:29 chinaifne 阅读 (298) | 评论 (0) 编辑
摘要:如果你需要提供一个复杂的组合用户界面来输入元数据,这时就要添加设计器的支持。换句话说,除此之外没有别的办法来输入你自定义的元数据类型。添加设计器的支持,首先你要创建一个Editor作为自定义的类型,一个Editor其实就一个继承于.NET 中的System.Drawing.Design.UITypeEditor类的子类。 安装CodeSmith后在,在C:\Program File\CodeSm... 阅读全文
posted @ 2007-04-17 15:27 chinaifne 阅读 (198) | 评论 (0) 编辑
摘要:CodeSmith在执行模版时通过调用一些API来完成的,主要经过了以下这几步的操作: l 编译一个模版 l 显示编译错误信息 l 创建一个新的模版实例 l 用元数据填充模版 l 输出结果 下面这段代码显示了这些操作: CodeTemplateCompiler compiler = new CodeTemplate... 阅读全文
posted @ 2007-04-17 15:27 chinaifne 阅读 (149) | 评论 (0) 编辑
摘要:在CodeSmith中,CodeTemplate.Render方法是在模版执行完成进行模版输出时执行,你可以通过重载CodeTemplate.Render方法来修改CodeSmith输出时的事件处理。例如:你可以修改模版输出时的方式来代替现在默认的方式,下面这段代码展示了在保持CodeSmith默认的窗口显示的同时,把结果输出到两个不同的文件。 1 2 3This template demo... 阅读全文
posted @ 2007-04-17 15:25 chinaifne 阅读 (277) | 评论 (0) 编辑
摘要:在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。 OutputFileCodeTemplate主要做两件事情: 1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件; 2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去... 阅读全文
posted @ 2007-04-17 15:24 chinaifne 阅读 (573) | 评论 (0) 编辑
摘要:在使用CodeSmith进行代码生成的时候,你可能需要在子模版和父模版之间共享属性。比如,写一个基于数据库生成代码的模版,在每个模版里面都定义了一个名为Server的属性。当你在父模版中使用此属性时,它的值只对父模版起作用。想要设置此值到子模版,可以在父模版中使用CopyPropertiesTo方法,当在父模版中使用此属性时,它的值会发送到子模版中去。下面这段代码展示了如何使用该方法: //... 阅读全文
posted @ 2007-04-17 15:23 chinaifne 阅读 (100) | 评论 (0) 编辑
摘要:CodeSmith允许我们存储元数据在XML文件中,然后在执行模版时直接打开XML文件填写到属性面板中。 1.XML Property With a Schema 1 2 6 7 8 9 10 11 12 13 14 15 16 ... 阅读全文
posted @ 2007-04-17 15:22 chinaifne 阅读 (233) | 评论 (0) 编辑
摘要:用CodeSmith生成可变化的代码,其实是先利用CodeSmith生成一个基类,然后自定义其它类继承于该类。当我们重新生成基类时CodeSmith不要接触继承的子类中的代码。看下面的这段模版脚本: class { m_; public ( ) { m_ = }} 执行该模版并输入如下数据: 该模版生成的代码可能如下: 1class Accou... 阅读全文
posted @ 2007-04-17 15:21 chinaifne 阅读 (108) | 评论 (0) 编辑
摘要:SchemaExplorer允许我们获取数据库中一些对象的信息。如果你使用的是SQL Server2000数据库,你可以通过扩展属性获取很多对象的有用的信息。例如:SQL Server定义了一个扩展属性来标识表中的唯一标识字段,在模版中可以这样写: Identity Field = CodeSmith定义的扩展属性包括table columns, view columns, 和 comman... 阅读全文
posted @ 2007-04-17 15:20 chinaifne 阅读 (320) | 评论 (0) 编辑
摘要:使用FileDialogAttribute可以设置FileNameEditor中的属性,基本成员如下: 属性 描述 默认值 FileDialogType Save or Open FileDialogType.Save Filter Filter string for file extensions All Files (*.*)|*.* Title Dialo... 阅读全文
posted @ 2007-04-17 15:19 chinaifne 阅读 (139) | 评论 (0) 编辑
摘要:FileNameEditor类给我们提供了在CodeSmith属性面板中弹出打开或保存文件对话框的方式,在使用时,首先在模版中得添加对程序集CodeSmith.CustomProperties的引用。然后就可以在模版中定义一个属性来使用FileNameEditor: 12425 当我们执行该模版时,在属性面板中同样显示为一个按钮: 单击该按钮,弹出一个保存文件的对话框: 我们也可以通过... 阅读全文
posted @ 2007-04-17 15:18 chinaifne 阅读 (149) | 评论 (0) 编辑
摘要:StringCollection提供了一种集合的输入方式,在代码中,可以用Array的方式来引用。在使用这个类之前,在模版中我们必须添加对CodeSmith.CustomProperties程序集的引用: 添加完程序集之后,我们就可以使用StringCollection在脚本块中定义一个属性: 执行该模版时,这个属性将在属性窗体中显示为一个按钮: 单击按钮,将会弹出一个String Co... 阅读全文
posted @ 2007-04-17 15:17 chinaifne 阅读 (1154) | 评论 (0) 编辑
摘要:这是我用CodeSmith的一个页面添加修改数据表的模板.CS 1 3 4 7 8 11 12 13 14 15 18 19 22using System; 23using System.Collections; 24using System.ComponentModel; 25using System.Data; 26using System.Drawing;... 阅读全文
posted @ 2007-04-17 15:04 chinaifne 阅读 (521) | 评论 (0) 编辑
摘要:首先我们要添加命名空间。然后我们在模板中自定义一个属性,用来表示要存储的路径。其中我们使用了this.CodeTemplateInfo.DirectoryName得到当前模版所在路径作为默认路径。 private string _outputDirectory = String.Empty;[Editor(typeof(System.Windows.Forms.Design.FolderN... 阅读全文
posted @ 2007-04-17 15:03 chinaifne 阅读 (519) | 评论 (0) 编辑
摘要:今天在微软的网站看到的一篇使用CodeSmith的例子,现在写出来大家一起研究研究。 首先,我还是要简要介绍一下其中用到的基础知识。 1.在模板中的代码区中(或)可以使用.NET中的一些类和方法。但是就像和.NET项目中一样需要添加应用,就像C#中的using 2.在脚本区域中可以编写生成模板时使用到的函数,其中的语言根据在声明模板时定义的使用... 阅读全文
posted @ 2007-04-17 15:02 chinaifne 阅读 (92) | 评论 (0) 编辑
摘要:今天又根据CodeSmith的几个基本组件写出了基于表生成删除功能的存储过程代码生成模板。 昨天觉得添加的存储过程模板写的比较简单,今天准备详细介绍一下这个删除的模板。 首先介绍我们使用到的一个教本函数GetSqlParameterStatement(ColumnSchema column),其函数代码如下: 1public string GetSqlParame... 阅读全文
posted @ 2007-04-17 15:01 chinaifne 阅读 (99) | 评论 (0) 编辑
摘要:这个例子仅是一个简单的应用,在我翻译并学习完CodeSmith的英文帮助文档后,对CodeSmith有了一定的了解,开始着手编写一些CodeSmith应用模板,今天按照最早提到的例子自行编写了一个基于表的添加存储过程的生成模板。具体语法前面基础中已做过详细解释这里仅是一个小综合应用的例子,望对大家学习CodeSmith有很好的帮助。我的同事也写了几个CodeSmith的技巧的文章http... 阅读全文
posted @ 2007-04-17 15:00 chinaifne 阅读 (118) | 评论 (0) 编辑
摘要:编写CodeSmith自定义属性的编辑器(Writing Custom Property Editors) 当你开始编写自定义的CodeSmith模板时,很可能对于使用它的strings或integers属性很满意,但有时你会发现需要创建一个不同类型的属性,可能是一个自定义的类型或者是.NET framework中但是在属性面板中没有提供的类型。在模板中去作这些很简单,但是怎样... 阅读全文
posted @ 2007-04-17 14:58 chinaifne 阅读 (136) | 评论 (0) 编辑
摘要:本文翻译的内容为CodeSmith控制台指南。 很多人仅仅知道CodeSmith像一个图形应用程序,或者可能是一个Visual Studio的附件,但是通过CodeSmith的控制台应用程序还有好多其他的使用方法。控制台应用程序是很有价值的,因为可以通过它去生成脚本,或者其他一些自动工具。这篇文档的目的就是要告诉你怎样使用它的控制台应用程序并且如何去定义变量和参数。 Basic Usage ... 阅读全文
posted @ 2007-04-17 14:56 chinaifne 阅读 (162) | 评论 (0) 编辑
摘要:本文主要介绍CodeSmith对象。 CodeSmith Object CodeSimth中有许多对象可以在编写模板的时候使用,这里将介绍这些对象的一些公用方法和属性以及怎么使用它们。 代码模板对象(CodeTemplate Object)在模板中,“this”(或者“Me”在VB.NET中)在当前模板中代码代码模板对象。 代码模板的方法(CodeTempla... 阅读全文
posted @ 2007-04-17 14:55 chinaifne 阅读 (139) | 评论 (0) 编辑
摘要:本篇将介绍CodeSmith的模版中的语法。代码标签 标签 可以放置任意数量的代码在其中,但并不能直接输出到模版中。 标签 在模版中输出一个字符串。上例中的 脚本标签 在这个标签中可以包含一段代码,但是他不直接影响输出的模版。可以放置一些比较有帮助的方法在其中,然后在模版的各个地方可以调用它。在脚本标签中必须包含这个参数runat=”template”,否则他会被处... 阅读全文
posted @ 2007-04-17 14:51 chinaifne 阅读 (115) | 评论 (0) 编辑
摘要:本文是翻译的第四篇,内容为在CodeSmith中使用的语法和标签的参考。CodeSmith模板语法参考 本文的目的是在编写一个CodeSmith模板时遇到的各种类型的变量和对象提供参考。本文的目的不是要介绍CodeSmith,如果您想快速了解CodeSmith请查看我翻译的CodeSmith基础(一)和CodeSmith基础(二)。标签 标签一般出现在模板的头部,被... 阅读全文
posted @ 2007-04-17 14:51 chinaifne 阅读 (135) | 评论 (0) 编辑
摘要:这里写的东东都是从CodeSmith自带的帮助文档中FAQ里学到的东东 1.如何在模板中添加注释 CodeSmith: VB.NET: C#: 2.创建一个可以下拉选择的属性 首先定义一个枚举类型的变量,然后将属性的类型设置为枚举型 1 2 ... 阅读全文
posted @ 2007-04-17 14:50 chinaifne 阅读 (176) | 评论 (0) 编辑
摘要:本文将介绍CodeSmith与数据库进行交互生成相应的存储过程,本例使用的数据库为SQL Server 2000。 在与数据库进行交互时,我们使用到了一个CodeSmith自带的组件SchemaExplorer,利用这个组件我们可以访问数据库的数据表、存储过程、视图等,并可以得到相应的数据类型、标识列、列的(字段)名称等信息。 下面这个例子是教我们如何生成一个存储过程... 阅读全文
posted @ 2007-04-17 14:47 chinaifne 阅读 (140) | 评论 (0) 编辑
摘要:请大家耐心看完所有的基础文章,前两篇网上发表的比较多,是CodeSmith英文帮助文档的第一篇,我后面写的基础是将其他所有的英文帮助全部翻译出来了,全部为本人手写翻译,希望对大家有所帮助 创建好一个模板后第一步要指明这是一个C#语言的模板。 第二步,我们要指明模板在生成代码时的属性,即生成代码需要的输入值变量。 如上边所示,在进行代码生成时,在Co... 阅读全文
posted @ 2007-04-17 14:45 chinaifne 阅读 (184) | 评论 (0) 编辑