编码方式使用CodeSmith

CodeSmith的作用是不言而喻的,用过的人都会觉得它非常强大.根据自定义模板,快速生成代码.只是我们使用的时候,要在它提供的CodeSmith Studio环境下使用模板,再传入相应参数,最终生成NET的类文件.

      如果我们可以通过编码方式,把CodeSmith功能融入NET代码中,这样就会比较灵活,方便我们控制了.根据下面的操作步骤我们就可以实现.

      先说下环境,我安装的CodeSmith版本是5.1,当然是破解版(你懂的).居说CodeSmith注册费用还是比较昂贵滴.我们需要如下几个DLL文件,这几个文件在安装路径下都可以找到.

CodeSmith.Engine.dll

CodeSmith.Feedback.Client

SchemaExploer.dll

SchemaExploer.SqlSchemaProvider.dll

      把这几个DLL文件引入项目文件之后,接下来就需要制作模板了,我们也可以直接使用CodeSmith自带的模板.打开CodeSmith Studio,右侧就是Template Exploer部分,选择一个模板,右键,选择Open Folder In Window Exploer菜单项,确定好模板路径后,就可以开始编码了.

      在写代码之前,我们还是先看下模板的组成,如图-1所示

clip_image002

图-1

      代码第2句,Property关键字,就表示这个模板的属性,也是需要我们传入的参数,看类型是SchemaExploer.DataBaseSchema,也就是说,我们只要传入这个类型的参数值即可

代码如图-2所示

clip_image004

图-2

      代码非常简单,先要加载模板再编译,然后传入属性值,再输出就OK了.模板编译部分是CompileTemplate方法,如图-3所示

clip_image006

图-3

传入属性值的代码是CodeTemplate.SetProperty;

输出类文件的代码是RenderToFile;

      OK,整个过程结束,看看我们的成果吧,如图-4所示

clip_image007

图-4

      这个模板的作用是生成Db数据库中所有Db表的枚举类.

      编码方式使用CodeSmith还是非常灵活的,比如我想生成数据库中Db表的CreateSQL语句,以前我们可能是自己拼写字符串实现,现在使用CodeSmith模板,就非常简单了.如图-5所示,大家参考这个代码自己试下,是不是非常简单呢?

clip_image009

 

代码文件

编码方式使用CodeSmith.Files

经验技巧

 
摘要: CodeSmith的作用是不言而喻的,用过的人都会觉得它非常强大.根据自定义模板,快速生成代码.只是我们使用的时候,要在它提供的CodeSmith Studio环境下使用模板,再传入相应参... 阅读全文
posted @  2012-01-29 10:09 Vincent.Q 阅读(1074) |  评论 (3)  编辑

 

摘要: 前几天把类库由Net2.0升级到3.5,过程还是比较顺利的,只是其中一个DLL出了点问题,就Newtonsoft.Json.DLL,原来,它有2个版本,一个是基于Net2.0类库的,另一个... 阅读全文
posted @  2011-11-08 07:53 Vincent.Q 阅读(2587) |  评论 (11)  编辑

 

摘要: Net支持反射功能以后,确实使我们Net程序眼前一亮啊,真是太神奇了,只需要传入字符串就可以完成功能.可以说,反射功能的引入,使我们在处理某些问题上更加得心应手. 传统的Db... 阅读全文
posted @  2011-11-01 07:25 Vincent.Q 阅读(5384) |  评论 (59)  编辑

 

摘要: 我们在开发过程中,肯定会有几个项目作为基础项目,存放一些比较常用的类和方法,供其他项目使用.一般来说,方法实现以后,就不想再去管它了,以致于新加入的某个伙计问这个项目里的方法有没注释或说明... 阅读全文
posted @  2011-10-31 07:54 Vincent.Q 阅读(2976) |  评论 (7)  编辑

 

摘要: 上网查资料,无意间找到了这个小东东,在博客园里搜了下,相关资料不多.这里我写下,希望给更多的朋友带来便利. 从字面上很明显,它属于日志记录的工具,在WebForm客户端使用,这个我们就可以避免在需... 阅读全文
posted @  2011-07-16 12:49 Vincent.Q 阅读(1452) |  评论 (5)  编辑

 

摘要: 前段时间去图书馆借书,无意中发现这样一本书,书名是”新一代 .NET Office开发 Excel篇”,书名比较有意思,就借出来看看.看完以后,发现确实不错.它挖掘了Office产品中我们经常忽略的... 阅读全文
posted @  2011-06-07 08:57 Vincent.Q 阅读(2330) |  评论 (15)  编辑

 

摘要: 这段时间比较空,可以有时间去玩玩比较潮的技术了,呵呵.知道Entity Framework这个东东,是同事告诉我的.说不错,有时间可以玩玩,最近研究了下,确实不错.它让我想起了一句话:微软在制造傻瓜... 阅读全文
posted @  2011-06-06 18:44 Vincent.Q 阅读(1045) |  评论 (5)  编辑

 

摘要: 做WebForm软件的朋友们,对于JQuery EasyUI类库肯定不会陌生,它是基于JQuery类库编写的,据说是国人开发的,真是神人啊.使用此控件,可以大大减轻我们的工作量.相比微软的控件,更为... 阅读全文
posted @  2011-05-17 09:25 Vincent.Q 阅读(5031) |  评论 (99)  编辑

 

摘要: 做管理类软件的开发员,画单据页面是必须要经历的事情.之前我做过PowerBuilder的开发,它的数据窗口虽然很强大,但是画数据窗口确是一件非常繁琐的事情.在众多的UI设计器中,恐怕只有VS提供的I... 阅读全文
posted @  2011-05-06 08:42 Vincent.Q 阅读(3139) |  评论 (16)  编辑

 

摘要: 五一放假,研究了下RDLC,之前一直有人说如何强大?研究之后才发现,确实很强大.微软的这套东西,感觉是借鉴了Sybase的数据窗口,配置方式大同小异咯.我们现在看看这套东西如何使用? 有句话叫:别... 阅读全文
posted @  2011-05-04 09:18 Vincent.Q 阅读(2582) |  评论 (5)  编辑

 

摘要: 前段时间写了篇类似的文章,自己在使用过程中,也没出现什么问题.不过,上周出差的时候,客户的一个需求,使用那篇文章的思路就不可以了.原因如图-1所示.简单说,是某一面板下,即有TextBox这样的单条... 阅读全文
posted @  2011-05-01 10:41 Vincent.Q 阅读(1326) |  评论 (5)  编辑

 

摘要: 提起图表控件,大想到的控件厂商的名字里,恐怕不会有微软,其实微软本身提供了一个控件的,而且是同时支持WinForm和WebForm的,只是随着微软其他产品的出现,这个控件不再研发,这个控件就是OWC... 阅读全文
posted @  2011-05-01 08:39 Vincent.Q 阅读(354) |  评论 (1)  编辑

 

摘要: 最近的项目里遇到这样一个需求:WebForm系统里客户在奖金分配完成后,需要将分配结果导出成纸制,以做备份.一开始这个需求很简单,使用如图-1所示的方式,拼接好htmltable字符串以后,也是可以... 阅读全文
posted @  2011-04-30 11:06 Vincent.Q 阅读(1926) |  评论 (8)  编辑

 

摘要: 最近项目组的打印控件有所改变,已经换成Lodop控件,使用以后发现,功能确实非常强大.可以打印Web页面内某个控件的内容.下面,还是通过一个实例来说明下吧,医院系统有个模块,是院内感染模块,它需要填... 阅读全文
posted @  2011-04-30 09:29 Vincent.Q 阅读(1810) |  评论 (16)  编辑

 

摘要: 在日常操作中,Office文档恐怕是大家最为常用的文件.同时,随着电子化的逐步推广,对Office文档的操作要求更越来越高,不只是在硬盘里的某个文件夹里新建,修改Office文档了,可能需要在浏览器... 阅读全文
posted @  2011-03-28 08:56 Vincent.Q 阅读(2534) |  评论 (17)  编辑

 

摘要: 在我以前的贴子中,有过对此控件的介绍,但也仅仅是使用它的打印功能.经过这段时间的使用,发现它如果作为单据模板使用,效果也很不错,而且作为模板的话,不仅在WebForm里可以,在WinForm里也是可以的,本文提供的demo里就提供了这两个场景的使用.好了,让我们直接进入正题 阅读全文
posted @  2011-03-21 08:49 Vincent.Q 阅读(1518) |  评论 (9)  编辑

 

摘要: 公司一直在做WebForm软件,所以经常要创建新页面来完成某些功能,如数据的增删改查等.对于单据页面,大家一定不陌生. 可能最常见的场景就是一个列表页面+一个单据页面,列表页面使用网格控件展示批量... 阅读全文
posted @  2011-03-17 17:42 Vincent.Q 阅读(2000) |  评论 (10)  编辑

 

摘要: 最近公司有个项目,需要直接在浏览器中操作Word,Excel等Office文档,几经查找,最后还是找到了一个功能比较强大的控件,是老外开发的控件! 阅读全文
posted @  2010-12-05 22:48 Vincent.Q 阅读(3370) |  评论 (21)  编辑

 

摘要:       近期为公司的一个项目数据库进行了转换,将Oracle的Db转换为SqlServer(2000或2005均可),一开始在网上找了一些资料,发... 阅读全文
posted @  2010-11-25 20:30 Vincent.Q 阅读(1851) |  评论 (10)  编辑

 

摘要:   SqlServer和Oralce在本身的数据库里,都存放了Db对象信息,比如表信息,字段信息,甚至包括源码.但AccessDb好像没有,在里面找了找还真没找到.在google之后,发现... 阅读全文
posted @  2010-11-07 13:11 Vincent.Q 阅读(580) |  评论 (0)  编辑

 

摘要: 前段时间公司要把PB的东东搞到Asp.Net项目里,并实现打印.考虑过使用水晶报表,这样PB的DataWindow(数据窗口)就用不上了,这个很心痛,而且水晶报表相当于是个鸡肋.(书中暗表,PB的DataWindow相当相当的强大,不用确实可惜).经过多方打探和印证,PB的DataWindow有个active的web控件,叫active datawindow.其实sybase本身推出了datawindow.net,但个人感觉,使用起来没有active datawindow好用. 阅读全文
posted @  2010-08-02 08:07 Vincent.Q 阅读(2532) |  评论 (20)  编辑

 

 
posted @  2010-07-26 12:42 Vincent.Q 阅读(2915) |  评论 (22)  编辑

 

摘要: 最近对ajax比较感兴趣,用vs08的方法试了下,比较方便.不过,必须是静态方法才可以,郁闷.vs05的方式还需要注册类类型,比较麻烦,如果自己写个方法能够模拟出ajax的调用方式,自己接收值,不是很... 阅读全文
posted @  2010-05-10 08:52 Vincent.Q 阅读(1598) |  评论 (5)  编辑

 

摘要: 用过Outlook软件的朋友都知道,一定被它左侧的导航菜单所吸引.灵活并节省空间.效果非常不错. 如果自己想实现出来,恐怕要想一下了.可能有朋友会说,可以用第三方控件搞定咯.没错,当然可以,本人以前... 阅读全文
posted @  2010-05-01 13:54 Vincent.Q 阅读(1987) |  评论 (4)  编辑

 

摘要: 说起PowerBuilder,可能大家都会嗤之以鼻,然后说一句:“哥们,还用呢啊”?记得以前看过的电影“功夫熊猫“里说:存在即是合理。我想说得是,世界上如果这个东西或这件事情存在,一定有它的道理,好像扯得有些远啊。。。。现在WebService非常火,如果将两者结合起来呢,比如:用Net写好的WebService被Pb调用,而且还可以发布成接口形式,被其他公司所调用,合乐而不为呢? 阅读全文
posted @  2010-03-18 13:14 Vincent.Q 阅读(3012) |  评论 (9)  编辑

 

摘要: l 业务场景 我们公司的程序是CS结构的,因此需要在每个客户端均要布署一次。客户端升级就成了一个比较头痛的事情,写个客户端自动升级的小工具,当然可以。不过,也有个小问题麻烦点,假设客户端机器上的程序... 阅读全文
posted @  2010-01-21 21:21 Vincent.Q 阅读(351) |  评论 (4)  编辑

 

摘要: l DataWindow.Net研究 1.所用PB版为PB11.5评估版,破解后即可使用 2.DataWindow.Net控件在安装完PB11.5以后,到安装路径上找相应的Dll文件,在VS程序的... 阅读全文
posted @  2010-01-21 17:14 Vincent.Q 阅读(2046) |  评论 (7)  编辑

 

摘要: 最近,公司在用Infragistics公司的控件,版本是2008,总体感觉很好很强大。不过,如果没有帮助文档支持的话,恐怕很难开发。经过这段时间的使用,把使用技巧分享一下。再说明一下,我们使用的都是Web控件。 阅读全文
posted @  2009-12-17 09:00 Vincent.Q 阅读(2503) |  评论 (17)  编辑

 

摘要: 管理类软件中,我们要对订单的某条数据进行修改,是先将数据载入单据页面中,然后再进行操作。针对明细表,可能会新增数据,可能会修改数据。然后再点击保存按钮进行数据保存。在收集数据的时候,我们就要判断哪些数据是数据库中已有的,若存在的就不必新增一行。这时就要根据条件获取行的索引号了。 阅读全文
posted @  2009-11-12 09:06 Vincent.Q 阅读(726) |  评论 (2)  编辑

 

摘要: 一个引号引发的bug中的下拉菜单效果制作,比较简单,大家看一下吧,呵呵 阅读全文
posted @  2009-11-09 17:01 Vincent.Q 阅读(223) |  评论 (3)  编辑

 

摘要: 思前想后,这篇博文还是放到首页上来吧,希望让更多的开发人员注意到,可能对于大家来说,是些微不足道的问题.不过,偶觉得还是很有意思的一个问题,希望大家见谅哦! 阅读全文
posted @  2009-11-02 10:32 Vincent.Q 阅读(2256) |  评论 (16)  编辑

 

摘要: 声明:本贴不是原创,参考贴子网址:http://kb.cnblogs.com/page/42226/?page=1 //xml文件内容 <?xml version="1.0"... 阅读全文
posted @  2009-08-08 22:42 Vincent.Q 阅读(285) |  评论 (0)  编辑

 

摘要: 本文主要介绍net技术中"反射"的使用方法,包括如何对属性赋值,获取变量,属性,方法,事件的列表,如何设置属性及调用方法等. 阅读全文
posted @  2009-08-02 22:22 Vincent.Q 阅读(338) |  评论 (1)  编辑

 

摘要: 本文主要介绍下net中ado.net的基本使用方法,属于初级中的初级,最近在整理net的文档.准备将这些分门别类整理出来,希望能给一些准备学或开始学net的朋友有所帮助 阅读全文
posted @  2009-08-02 18:43 Vincent.Q 阅读(278) |  评论 (0)  编辑

你可能感兴趣的:(code)