CodeSmith实用技巧(八):生成的代码输出到文件中

CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Inherits="OutputFileCodeTemplate" Description="Build custom access code." %>
<%@ Assembly Name="CodeSmith.BaseTemplates" %>

OutputFileCodeTemplate主要做两件事情:

1.它添加一个名为OutputFile的属性到你的模版中,该属性要求你必须选择一个文件;

2.模版重载了方法OnPostRender(),在CodeSmith生成代码完成后把相应的内容写入到指定的文件中去。

如果想要自定义OutputFile属性弹出的保存文件对话框,你需要在你的模版中重载OutputFile属性。例如:你希望用户选择一个.cs文件来保存生成的代码,需要在你的模版中添加如下代码:

<script runat="template">
// Override the OutputFile property and assign our specific settings to it.
[FileDialog(FileDialogType.Save, Title="Select Output File", Filter="C# Files (*.cs)|*.cs", DefaultExtension=".cs")]
public override string OutputFile
{
    
get {return base.OutputFile;}
    
set {base.OutputFile = value;}
}

</script>
作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-12-28 08:44 TerryLee 阅读(2098) 评论(5)  编辑 收藏 所属分类: CodeSmith

  回复  引用  查看    
#1楼 2005-12-29 09:23 | kid_li      
代码中的FileDialog我没有找到,查看其它的模版代码后感觉FileDialog应该是一个类。但是我用FileDialogAttribute类替换FileDialog,在引入CodeSmith.CustomProperties命名空间模版运行就通过了,不知这样做是否和你说的意思相同
  回复  引用  查看    
#2楼 2006-01-11 10:08 | 努力学习的熊      
FileDialog类是一个抽象的类,必须重载才能进行使用,编译不能通过,请教一下:)

@kid_li
FileDialog是System.Windows.Forms下的一个类。
FileDialog 是抽象类,无法直接创建。而且,您也无法从该类继承。要创建对话框以选择或保存文件,请使用 OpenFileDialog 或 SaveFileDialog。
FileDialogAttribute类如你所说是CodeSmith.CustomProperties下的一个类,好像不大一样
  回复  引用    
#3楼 2006-09-29 16:29 | xuhoudao [未注册用户]
能不能做到输出到多个文件呢?
  回复  引用  查看    
#4楼 [楼主]2006-10-06 17:23 | TerryLee      
@xuhoudao
这个是可以的
  回复  引用  查看    
#5楼 2007-12-27 09:14 | 元宝      
CodeSmith用子模版的RenderToFile输出到指定文件
http://www.cnblogs.com/yuanbao/archive/2007/12/26/1015598.html

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
成果网帮您增加网站收入


相关链接: