鍍金池/ 教程/ C++/ 基本語法-CodeTemplate 指令
使用主從代碼模板
CodeTemplateInfo 對(duì)象
引用其它文件或 .Net 類庫
編寫第一個(gè)代碼模板
Progress 對(duì)象
基本語法-使用注釋
基本語法-轉(zhuǎn)義Asp.Net標(biāo)記
調(diào)試
為 Yii Framework 創(chuàng)建生成 ActiveRecord 的代碼模板
基本語法-聲明和使用屬性
自動(dòng)生成Yii Framework ActiveRecord類簡單模板
Merge 策略
使用 XMLProperty
CodeTemplate 對(duì)象
基本語法-CodeTemplate 指令
概述
使用 SchemaExplorer 來獲取數(shù)據(jù)庫定義

基本語法-CodeTemplate 指令

前面的幾篇介紹了使用 CodeSmith 模板自動(dòng)生成代碼和編寫代碼模板的基本知識(shí)。也說過 CodeSmith最核心的部分是代碼模板,從本篇開始介紹 CodeSmith 代碼模板的基本語法,對(duì)于 Asp.Net 程序員來說,可以說是碰到老朋友了:-) ,CodeSmith 的代碼模板和 Asp.Net Page 幾乎如出一轍。

本篇介紹 CodeTemplate 指令,這個(gè)是模板中唯一必須的聲明,包含一些模板特殊的屬性,包含模板使用的語言、生成的語言和一些對(duì)于模板的描述。比如:

<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="This is a demo template" %>

參數(shù)的介紹:

  • Language:在開發(fā)編寫模板時(shí)使用的語言,例如 C#,VB.NET,Jscript 等。
  • TargetLanguage:只是對(duì)模板代碼的一個(gè)分類,不會(huì)影響生成的代碼語言。是模板的一個(gè)屬性,說明模板要基于那種語言生成相應(yīng)的代碼。例如你可以用 CodeSmith 從任何一種語言生成C#代碼。
  • Description:對(duì)于模板的一些說明信息,在 CodeSmith Explorer 中選中該模板時(shí)會(huì)顯示這里的信息。
  • Inherits:所有 CodeSmith 模板默認(rèn)繼承自 CodeSmith.Engine.CodeTemplate,這個(gè)類提供模板使用的一些基本功能,像 ASP.NET 頁面的 Page 類,這些被繼承的類的屬性可以被修改,但是這些新的類也必須繼承 CodeSmith.Engine.CodeTemplate。CodeSmith 也同樣可以找到這個(gè)類,當(dāng)然你要引入一個(gè)組件包含這個(gè)類。
  • Src:在某些方面 Src 和繼承 Inherits 比較相似,它們都允許你從其他的類包含一些功能進(jìn)模板。這兩個(gè)屬性的區(qū)別是,Src 可以讓類與你的模板被動(dòng)態(tài)編譯,而 Inherits 僅允許你提供一個(gè)已經(jīng)編譯好的類或組件。
  • Debug:可以確定是否在模板中可以包含調(diào)試符號(hào)。如果將這個(gè)屬性設(shè)置為 True,則可以使用System.Diagnostics.Debugger.Break()方法來設(shè)置斷點(diǎn)。
  • LinePragmas:設(shè)置為 True,模板的錯(cuò)誤將被指向到模板的源代碼。設(shè)置為 False,模板的錯(cuò)誤將被指向到編譯的源代碼。
  • ResponseEncoding 指明代碼模板的輸出文件的編碼方式,可以為 System.Text.Encoding.GetEncoding 支持的所有編碼方式,如果輸出文件已存在并且和要生成的內(nèi)容一致,輸出文件的編碼方式不會(huì)變化。
  • OutputType 指明輸出文件的的輸出模式,可以有三種模式:

Normal: 正常模式,代碼模板輸出內(nèi)容寫到正常的輸出流(Response Stream)。 Trace: 輸出內(nèi)容寫到 Trace(調(diào)試)輸出流中。 None: 控制代碼模板不輸出任何內(nèi)容,主要用在主-從模板的主模板中,有些情況下無需主模板輸出任何內(nèi)容。

  • NoWarn 不顯示某些編譯警告,Warning 的 ID 使用逗號(hào)分隔,主要用在編譯 C# 和 VB.Net 時(shí)用到。
  • ClassName 使用 Code-Behind 時(shí)對(duì)應(yīng)的類名稱,類似于 Asp.Net 代碼。
  • Namespace 使用 Code-Behind 時(shí)對(duì)應(yīng)的類命名空間名稱。
  • Encoding 代碼模板自身使用的編碼方式,缺省為 UTF-8.