在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
<%
@ CodeTemplate Language
=
"
C#
"
TargetLanguage
=
"
C#
"
Inherits
=
"
OutputFileCodeTemplate
"
Description
=
"
Build custom access code.
"
%>
<% @ Assembly Name = " CodeSmith.BaseTemplates " %>
<% @ 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 >
// 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 >