Posted on 2006-01-12 11:24
努力学习的小熊 阅读(2466)
评论(6) 编辑 收藏 所属分类:
CodeSmith使用
首先我们要添加<%@ Assembly Name="System.Design" %>命名空间。然后我们在模板中自定义一个属性,用来表示要存储的路径。其中我们使用了this.CodeTemplateInfo.DirectoryName得到当前模版所在路径作为默认路径。
private string _outputDirectory = String.Empty;
[Editor(typeof(System.Windows.Forms.Design.FolderNameEditor), typeof(System.Drawing.Design.UITypeEditor))]
[Optional]
[Category("Output")]
[Description("The directory to output the results to.")]
public string OutputDirectory
{
get
{
// default to the directory that the template is located in
if (_outputDirectory.Length == 0) return this.CodeTemplateInfo.DirectoryName + "output\\";
return _outputDirectory;
}
set
{
if (!value.EndsWith("\\")) value += "\\";
_outputDirectory = value;
}
}
这样编译运行后我们就可以看到如下效果:
1.JPG)
单击选择路径按钮后我们就可以看到这样的窗口
2.JPG)
选择后相应的路径值就会填入属性框。
收藏:)
最近正在看这个。希望楼主可以多写一些关于CodeSmith应用方面的东东。相信它不只可以用于生成数据库应用方面的代码,应该可以有更多方面的用途。
@Rebecca
如你所说确实有很大用处,我现在所在的公司已经开始尝试用它来做项目了。关于其他的具体应用有时间我会继续写出的:)
我现在遇到一个问题:如何共用某个模板中的属性?
一些字符格式的属性可以从XML文件中获取;但是有些,例如“SchemaExplorer.TableSchema”,如何在各个模板中共享?一定要用CopyPropertiesTo的方法吗?是否有些更简单的方法可以指定父模板和子模板?
最近才真正开始使用codesmith,不过使用3.1,用了网上找到的lic文件也仍然不停地倒计时,这是为何?
===========================
@Rebecca
如你所说确实有很大用处,我现在所在的公司已经开始尝试用它来做项目了。关于其他的具体应用有时间我会继续写出的:)
=============================
关于这些能否地讲一下?
很有兴趣.虽然写模板需要不少时间,可是写完模板后发现一按按钮就可以生成大量的代码,这感觉真是爽啊.
可能不能随时关注你的博客,所以有更新时请通知下兄弟哈.非常非常之感谢
guiqul@163.com