CodeGen用户定义的扩展令牌
CodeGen用戶定義的擴(kuò)展令牌
用戶定義的擴(kuò)展令牌是一種特殊的令牌,開發(fā)人員可以確定令牌的名稱以及在代碼生成過程中遇到令牌時(shí)要插入的值。
CodeGen支持多種機(jī)制,允許通過以下方式實(shí)現(xiàn)用戶定義的令牌:
?Environment variables.
?Include files.
?Command line tokens.
?Under defined token files.
如果模板文件依賴于開發(fā)人員為特定的用戶定義標(biāo)記提供值,可以將該
依賴關(guān)系告訴CodeGen。有關(guān)詳細(xì)信息,請(qǐng)參閱聲明用戶定義的令牌依賴項(xiàng)。
環(huán)境變量
如泛型標(biāo)記中所述,可以使用<環(huán)境:變量>模板文件中的令牌和CodeGen將把從
環(huán)境變量獲得的值插入到輸出流中。
包括文件
在通用標(biāo)記中也有記錄,可以使用<文件:name.ext>模板文件中的令牌和CodeGen
將從外部文件中讀取數(shù)據(jù)并將該數(shù)據(jù)插入到輸出流中。
命令行標(biāo)記
聲明已用已定義標(biāo)記的一種快速方法是使用-ut命令行選項(xiàng)在命令行上同時(shí)指定名
稱和值,例如:
codegen –s -t -ut MODEL_NS=MyApp.Model
可以在命令行上指定多個(gè)用戶定義的標(biāo)記,在-ut選項(xiàng)后用空格分隔,例如:
codegen –s -t -ut MODEL_NS=MyApp.Model VIEW_NS=MyApp.View
如果用戶定義的標(biāo)記值(等號(hào)字符后面的部分)包含雙引號(hào),則在將值傳遞給
CodeGen之前,Windows將刪除引號(hào)。在這種情況下,必須用反斜杠字符轉(zhuǎn)義雙引
號(hào)字符,如下所示:
-ut MYMESSAGE=“Hello World”
默認(rèn)情況下,在命令行上定義的替換值用戶定義標(biāo)記可能不包含其他標(biāo)記。如果希
望啟用該功能,則必須通過-utpp命令行選項(xiàng)告訴CodeGen將用戶定義的標(biāo)記視為
預(yù)處理器標(biāo)記。
用戶定義的令牌文件
如果需要定義多個(gè)用戶定義的令牌,那么有時(shí)可以在用戶定義的令牌文件中定義它
們,并通過-u命令行選項(xiàng)命名用戶定義的令牌文件。
用戶定義的令牌文件示例如下:
;
; User defined tokens for Synergex Inc.
;
<SUPPORT_PHONE>(800) 366-3472</SUPPORT_PHONE>
<SUPPORT_EMAIL>support@synergex.com</SUPPORT_EMAIL>
http://www.synergex.com
要告訴CodeGen從文件中讀取用戶定義的標(biāo)記,可以使用-u命令行選項(xiàng)。例如:
codegen –s -t -u MYTOKENS:
然后可以在模板文件中引用用戶定義的標(biāo)記。例如:
display(tt,”Please call support at <SUPPORT_PHONE>”)
display(tt,” or send an email to <SUPPORT_EMAIL>.”)
聲明用戶定義的令牌依賴項(xiàng)
如果CodeGen在模板文件中遇到某種格式類似于令牌(即由< and >字符分隔)但未被識(shí)別為令牌的內(nèi)容,則CodeGen將忽略它,并且該文本將保留在創(chuàng)建的輸出文件中。為了使CodeGen能夠?yàn)橹T如HTML、XML和XAML等語言或腳本生成代碼,這是必需的。
但是,當(dāng)涉及到用戶定義的令牌時(shí),這可能是一個(gè)問題,因?yàn)槿绻0灏膬?nèi)容是模板開發(fā)人員打算作為用戶定義的令牌來替換的,但是隨后從模板生成代碼的人忽略了指定用戶定義令牌的來源,則令牌將保留在生成的文件,不會(huì)報(bào)告任何錯(cuò)誤。
為了解決這種情況,模板開發(fā)人員可以使用<REQUIRES_USERTOKEN>令牌來聲明他們的模板需要聲明一個(gè)特定的用戶定義的令牌,可以在令牌文件(-u)中,也可以在命令行(-ut)中聲明。
如果模板聲明需要用戶定義的標(biāo)記,但在生成代碼時(shí)尚未聲明該用戶定義標(biāo)記,則CodeGen將顯示錯(cuò)誤并停止處理該模板。
總結(jié)
以上是生活随笔為你收集整理的CodeGen用户定义的扩展令牌的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeGen编写自定义表达式标记
- 下一篇: CodeGen处理Synergy方法目录