前面的幾篇介紹了使用CodeSmith模板自動生成代碼和編寫代碼模板的基本知識。也說過CodeSmith最核心的部分是代碼模板 ,從本篇開始介紹CodeSmith代碼模板的基本語法,對於Asp.Net程序員來說,可以說是碰到老朋友了:-) ,CodeSmith 的代碼模 板和Asp.Net Page 幾乎如出一轍。
本篇介紹CodeTemplate指令,這個是模板中唯一必須的聲明,包含一些模板特殊的屬 性,包含模板使用的語言、生成的語言和一些對於模板的描述。比如:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="This is a demo template" %>
參數的介紹:
Language:在開發編寫 模板時使用的語言,例如C#,VB.NET,Jscript等。
TargetLanguage:只是對模板代碼的一個分類,不會影響生成的代碼 語言。是模板的一個屬性,說明模板要基於那種語言生成相應的代碼。例如你可以用CodeSmith從任何一種語言生成C#代碼。
Description:對於模板的一些說明信息,在CodeSmith Explorer中選中該模板時會顯示這裡的信息。
Inherits :所有CodeSmith模板默認繼承自CodeSmith.Engine.CodeTemplate,這個類提供模板使用的一些基本功能,像ASP.NET頁面的 Page類,這些被繼承的類的屬性可以被修改,但是這些新的類也必須繼承CodeSmith.Engine.CodeTemplate。CodeSmith也同樣可 以找到這個類,當然你要引入一個組件包含這個類。
Src:在某些方面Src和繼承Inherits比較相似,它們都允許你從其 他的類包含一些功能進模板。這兩個屬性的區別是,Src可以讓類與你的模板被動態編譯,而Inherits僅允許你提供一個已經編 譯好的類或組件。
Debug:可以確定是否在模板中可以包含調試符號。如果將這個屬性設置為True,則可以使用 System.Diagnostics.Debugger.Break()方法來設置斷點。
LinePragmas:設置為True,模板的錯誤將被指向到模板的源 代碼。設置為False,模板的錯誤將被指向到編譯的源代碼。
ResponseEncoding 指明代碼模板的輸出文件的編碼方式, 可以為 System.Text.Encoding.GetEncoding支持的所有編碼方式,如果輸出文件已存在並且和要生成的內容一致,輸出文件的 編碼方式不會變化。
OutputType 指明輸出文件的的輸出模式,可以有三種模式:
Normal: 正常模式,代碼模板輸 出內容寫到正常的輸出流(Response Stream)。
Trace: 輸出內容寫到Trace(調試)輸出流中。
None: 控制代碼模板 不輸出任何內容,主要用在主-從模板的主模板中,有些情況下無需主模板輸出任何內容。
NoWarn 不顯示某些編譯警告 ,Warning的ID使用逗號分隔,主要用在編譯C#和VB.Net時用到。
ClassName 使用Code-Behind時對應的類名稱, 類似於Asp.Net代碼。
Namespace 使用Code-Behind時對應的類命名空間名稱。
Encoding 代碼模板自身使 用的編碼方式,缺省為UTF-8.