概述
国内写代码生成器的不少,可以说很多公司都有自己的代码生成器,好用的却不多,可定制性不强,始终不及CodeSmith或MyGeneration。最近园子里也发了不少的代码生成器,其中henry的CodeFactory的VS插件很值得推荐。我个人最近也在写一个代码生成器,开始想写一个能满足公司项目基本要求的就可以了,后来觉的还是通用的比较好,于是就有了Smart Code。看到这么多朋友都发了代码生成器,我也提前show一把,不过我这个目前还在开发中,希望这个月底可以发布,到时将会提供下载。
特性简介
1.整体界面风格类似于Visual Studio。
2.完全基于自定义的模板引擎,模板使用ASP.NET的标记和C#语法进行编写。
模板编写完全类似与CodeSmith,可以使用Import导入命名空间,使用Assembly添加程序集,使用Include包含其他的模板文件,使用Property声明属性。同时,也可以使用<script runat="temlate"></script>编写代码片段。
3.支持属性的自定义,以及生成界面控件的配置。
数据表属性:
字段属性:
4.可以生成多种类型的项目,并且支持自定义项目类型。
5.生成的代码为完整的VS项目。
6.生成代码预览。
结束语
Smart Code目前仍在开发中,开发完成后,将会免费提供下载。同时,如果大家有什么好的建议和想法,欢迎发mail给我,非常感谢。
作者:TerryLee
出处:http://terrylee.cnblogs.com
posted @ 2007-12-04 00:29
TerryLee 阅读(6777)
评论(126) 编辑 收藏 网摘 所属分类:
[13] 代码生成
发表评论
#102楼[
楼主]2007-12-04 20:06 |
@jt
呵呵,美工水平一般,根本不入流:)
#104楼[
楼主]2007-12-05 09:57 |
@else
拜师可不敢当:)
blog右边有我的Email。
您为我打开了更大的视野,从项目的开发,到工具的自架构..net的魅力又一次让我震撼!
我觉得虽然代码生成都很不错,但是唯独对界面层和数据层的传输那段代码没有生成工具生成
类似于
textbox1.text = Product.Name 这样的生成工具很少
我建议字段里在加上一个客户端验证的 正则表达式 用来生成js客户端验证
@gakaki
汗,这个就是自己写模板就行了,一点也不难。
我想在cs开头,加一个这个模块的功能,谁开发和改动的
有没有这样的宏代码。
应该怎么加,我看sharpplus有,vs2005好像没有。
可以考虑兼容codesmith的模板
并且在发布时,楼主应先写几个模板。
#114楼[
楼主]2007-12-06 23:06 |
@gakaki
这个编写模板啊~~~
#115楼[
楼主]2007-12-06 23:06 |
@高海东
上面的新建项目对话框中已经有LINQ to SQL的项目了!
#116楼[
楼主]2007-12-06 23:07 |
@Fencer
谢谢支持,我尽量做好
#117楼[
楼主]2007-12-06 23:07 |
@张荣华
发布的时候怎么可能不带模板呢?-_-
期待ing。。。
以前一直再用codesmith,博主能否说一下,这个smart code 相对于codesmith的一些优缺点吗,两者都是基于模板的
一直关注楼主的博客,学习~~~呵呵
#119楼[
楼主]2007-12-07 11:01 |
@Terry Dong
1.从模板语法上说,两者的语法非常相似,但是SmartCode只支持C#语言进行模板的编写(以后可能会扩展Vb.Net),而CodeSmith只是任何一种语言
2.CodeSmith支持编写模板时的智能提示功能,而SmartCode目前还做不到这一点。
3.SmartCode支持生成完整的解决方案,包括表、字段属性的可配置,这一点可能CodeSmith无法做到。
4.SmartCode是国产的,也是免费的:-)
@TerryLee
谢谢~~发布了一定试用下,呵呵
俺用过动软的那个,感觉还成,请问这个跟动软的那个有什么区别和特殊的地方,总体方向是一样的吗
同时关注中:)
这个界面挺好看的说..
#122楼[
楼主]2007-12-09 22:03 |
@MLY
1.SmartCode完全基于模板引擎,可以自行修改模板,而动软的好像没有提供;
2.生成的代码为完整的解决方案。
3.支持表、字段的属性配置。
基于模板的没用过......才疏学浅了.....
决定就拿楼主的这个开刀了....
3.SmartCode支持生成完整的解决方案,包括表、字段属性的可配置,这一点可能CodeSmith无法做到。
----------------------------------
CodeSmith可以生成解决方案,比如NetTiers
表、字段属性好像还无法配置。PowerDesigner设计的配置信息似乎足够丰富了,可惜自定义模板太麻烦了:(
关注!
另外关于代码生成器如何循环的问题,我很有兴趣。
比如:用一个模版A+实体B,生成了代码C
如何用模版A+实体BDEFG,循环生成代码CHIJK。一直未能解决,期待能在学习到相关知识。
ps:看来年末新一轮的代码生成时代又来了,我也要开始拣起几月前的MDA生成器。主要是在做VS那棵解决方案树的常用操作,以及属性窗口显示和编辑。要是哪位大侠有开源的模型编辑代码(根据模型图维护实体字段)不妨介绍哈,谢谢。
师兄,你用的那套图标在哪找的?能告诉我吗?或者发一分图标给我吗?hoh728@163.com
#129楼[
楼主]2007-12-11 19:24 |
@MLY
希望我可以尽快发布
#130楼[
楼主]2007-12-11 19:25 |
@WideWeide
嗯,我看了一下NetTiers,文件好多:)
#131楼[
楼主]2007-12-11 19:25 |
@leoxu
呵呵
#132楼[
楼主]2007-12-11 19:26 |
@Clark Chan
这个没有什么问题吧,循环调用模板就可以了啊,在模板中以实体作为输入参数就可以了:)
#133楼[
楼主]2007-12-11 19:27 |
@HOH
图标是直接从VS上抓取的:)
与Codesmith有什么区别?如果比Codesmith好用的话,我会考虑用你这个。
希望能导出Codesmith的模板。
#135楼[
楼主]2007-12-12 21:51 |
@岁月如歌
1.从模板语法上说,两者的语法非常相似,但是SmartCode只支持C#语言进行模板的编写(以后可能会扩展Vb.Net),而CodeSmith支持任何一种语言
2.CodeSmith支持编写模板时的智能提示功能,而SmartCode目前还做不到这一点。
3.SmartCode是国产的,也是免费的,甚至会开源:)
代码生成器的确可以减轻很多开发过程中的重复工作量.特别是能根据自定义的模板来定制更是很方便.我想请问下LZ,Smart Code有DeBug模板的功能吗?有的话,我想在编写模板的过程中可以减少编写的时间哦.
#139楼[
楼主]2007-12-13 19:46 |
@岁月如歌
谢谢:)
#140楼[
楼主]2007-12-13 19:48 |
@WaitdDing
谢谢,我也在考虑是不是该换个名字,等想好了再换吧,其实叫SmratCode的在我之前有两个代码生成器呢:)
Smart Code目前还没有提供Debug的功能,我最近正在看Visual Studio 2008 Shell,考虑是不是用它来实现呢?
呵呵,相信LZ会想出好的解决方式的.VS2008还没有怎么用去,不过听倒是听得很多.
名字的话可以向园子里的兄弟征集一下啊,建议而已.
基于模板的技术我是很感兴趣的,希望有机会研究一下.
加油!!!!!
#142楼[
楼主]2007-12-14 10:44 |
@WaitdDing
嗯,等完成后发布第一个版本,就向园子里的弟兄征询意见,呵呵
希望发布后能够自带连接oracle的三层模板,至少自动生成带参sql语句里面不会出现@
我就关心WeifenLuo.WinFormsUI.Docking 这个怎么用的?
我怎么就是用不来呢?楼主帮我一下...
#145楼[
楼主]2007-12-17 18:57 |
@ColdDog
下载后有带的Demo啊
现在进度如何了?
beta也好,等着试用呢!
(*^__^*) 嘻嘻……
--引用--------------------------------------------------
TerryLee: @WaitdDing
谢谢,我也在考虑是不是该换个名字,等想好了再换吧,其实叫SmratCode的在我之前有两个代码生成器呢:)
Smart Code目前还没有提供Debug的功能,我最近正在看Visual Studio 2008 Shell,考虑是不是用它来实现呢?
--------------------------------------------------------
叫EasyCode吧
我的代码生成器就是这个名字,不过我做的太简单了,只能自己使用。呵呵
#160楼[
楼主]2008-01-03 18:34 |
@你好ma
@ColdDog
@winsonet
@wenanry
感谢各位的关注,最近看了一下Visual Studio 2008 Shell,打算基于VS Shell来开发,所以要过段时间发布了。
#161楼[
楼主]2008-01-03 18:35 |
@EasyCode
等我做出来,大家一起讨论一下名字,呵呵,EasyCode也不错:)
--引用--------------------------------------------------
TerryLee: @EasyCode
等我做出来,大家一起讨论一下名字,呵呵,EasyCode也不错:)
--------------------------------------------------------
呵呵,这个@EasyCode就是我~
希望早日看到你的大作
我的那个简陋的东西就叫小EasyCode吧:)
#163楼[
楼主]2008-01-09 18:29 |
@ColdDog
:)
不错!还在期待中。
代码编辑器是用 ICSharpDevelop.TextEditor 做的不?
基于VS Shell来重新开发,大动干戈了哟!最近看了你的很多文章,确实不错,等吧,相信你一定拿出超越CodeSmith的作品来!(对了,代码智能感知功能一定要弄出来)
hoho, 我在和Terry差不多的时间里开发了一code generator, 和Terry的差不多. 不过界面就没有Terry的好了. 我的code generator界面是很朴素的. 唯一稍微好的是我的code editor是自己做的. 带有代码上下文自动语法提示和代码完成的特性(当然比不上visual studio了). 我在cnblogs贴了两个贴图. 由于当时没有打算提供下载, 当时好多人不满. 哈哈. 现在我已经把我的贴子删除了.
其实我和Terry差不多, 还在开发中, 实在不好意思在有很多问题的时候发出去. 目前在开发一个模板.
希望能和Terry交流下.
是不是流产了,怎么这么久了还没有公开?别忽悠人玩呀!
#172楼[
楼主]2008-07-08 16:26 |
@路过
你太抬举我了,我没那么多的时间来忽悠你玩!
说错话了,楼主莫怪!其实就是想看看你是不是还在关注大家的期盼之心?呵呵,期待你的大作!最近研究了你之前推荐的smartcode,感觉还是挺好的的。不过你的这个smartcode更具诱惑力!
李天平的那个也蛮好用,就是可定制性差了点,虽然他提供了BLL和DAL的插件重写机制,但是却没有提供Web的插件重写。
#175楼[
楼主]2008-07-09 19:45 |
@mikelij
sorry,今天刚看到你的评论,不知道你什么时候发的Email,我一直没有收到过。
@TerryLee
大约一个多月前(就是五月份了)我往你那个163.com信箱里面发过一封信. 你要还愿意交流的话,可以加我的msn: realwar3 at hotmail.
#177楼[
楼主]2008-07-10 09:46 |
@mikelij
OK,我已经加你了
#180楼[
楼主]2008-09-17 00:50 |
@我是一个过路人
或许已经夭折,或许几个月后会重新开始:)
路过.
我既有好话, 也有坏话.
好话是, 显示了不错的实力, 要祝贺一下.
坏话是, 方向错误. 如果仅仅是玩玩, 那到也没什么, 不过, 程序员没有完完全全不考虑工作的实际价值就冒然去做的. 这样的代码生成器, 其实也是不小的项目, 况且已经有若干个大公司的不错的同类东西了. 就算你做的好, 能顶上codesmith的一公司人吗? 就算你做的更好, 能顶的过微软大恐龙的免费代码生成器吗.
#182楼[
楼主]2008-10-08 18:41 |
@SuperSaiyan
首先你要搞清楚一个问题,并不是所有公司的同类东西都是免费的,都是开源的,我想做的是一个实实在在的开源项目。
话又说回来,国内做这个的,优秀的代码生成器还真没有几个,CodeSmith能实现的功能,也不见的我们就实现不了!
Terry的这个Smart Code是给你公司做的吧.是不是不能拿出来了.
@SuperSaiyan
据我的一个在微软的同事说,微软内部也是有n多代码生成器.但是都有局限.想想也是. 毕竟人是灵活的,程序是呆板的.
#185楼[
楼主]2008-10-30 17:52 |
@读者A
不是,只不过好久没有开发了,如果有机会,我会重新更新的。
#187楼[
楼主]2008-11-17 23:14 |
@你的追随者
呵呵,还没呢
#189楼[
楼主]2008-11-19 09:30 |
@刘雄飞
欢迎挑战,呵呵,有挑战才有进步嘛
#192楼[
楼主]2008-12-15 11:37 |
@mikelij
欢迎挑战,呵呵:)
#195楼[
楼主]2008-12-17 11:28 |
@fixok
由于各种原因,现在还没有一个完善的版本提供下载,抱歉:)
#198楼[
楼主]2008-12-19 01:31 |
@fixok
@。net
现在已经不是时间的问题了,涉及到很多问题,还没确定。
#200楼[
楼主]2009-05-31 09:41 |
@billrobin
由于其他的原因,暂时不会放出来了,抱歉。
基于模板才是正道啊 目前很生成工具都是固定一种架构 不同设计的项目 需要修改生成工具 局限很大 又时改生成器 还不如自己写代码来得快
基于模板 这个思路或许能让生成器成为编译器之上的一种通用工具 以后更多人能够解放啦 自从有了织布机 再也不用一针一线织毛衣
学习了 期待你的作品