摘要:我們回顧一下上一節的內容:我們學會了用CodeSmith 內建的模板產生第一段代碼,但那是CodeSmith 內建的模板,下面我們就來瞭解你要建立一個什麼模板.
1.開始我們的模板之旅
在這一節裡我將手把手的教你怎麼編寫一個屬於你自己的模板,你可以用它產生無數個相似的程式碼片段,是不是感覺很興奮?那麼就讓我們開始吧.
首先讓我們先認識下我們為什麼要花時間寫一個模板:你仔細想想平時在軟體開發的過程中,有一些可能是以前從來沒有做過的,對你來說是創新的工作。但還有一部分是你重複了很多次的對於你來說枯燥乏味的工作,這樣的工作容易讓你失去創新的興趣。你是否遇到過為一個新產品設計一個應用程式,或者為一個公司設計一個新網站,而其中大多數代碼跟你以前做過的只有很小的區別。
如果你發現你現在所做的都是一些重複的工作,那麼你完全應該試試CodeSmith 幫你擺脫枯燥的工作,CodeSmith 就是為產生那些變化比較少的網頁,SQL語句,HTML頁面,以及其他文字檔設計的。例如,如果你要編寫C#代碼,你知道每個C#工程都包含一個AssemblyInfo.cs檔案,它是Visual Studio.NET在你建立一個新的項目時自動為你建立的,這個檔案裡麵包含許多說明性的文字,主要作用當然是協助新手們瞭解其作用的,但是實話說大多數文字對於一個有經驗的開發人員都是垃圾,以前你每次可能會手動的清除那些不需要的東西,但是每次都做一次你不覺得煩嗎?下面我們就來示範用CodeSmith 做一個AssemblyInfo.cs,通過設定極少的屬性來產生一個“純淨”的AssemblyInfo.cs檔案。
2.建立一個AssemblyInfo模板
CodeSmith產生的模板檔案一般包含三種內容:
(1)CodeSmith組件
(2)模板不加任何處理直接輸出的靜態內容
(3)CodeSmith通過執行程式代碼輸出的動態內容
專業版的CodeSmith包含具有沒有任何限制的CodeSmith Studio,但是你也可以使用任何一款文字編輯器來編寫模板。CodeSmith模板裡的動態內容部分目前支援C#, Visual Basic,JScript。下面我們要編寫的這個模板我們使用C#語言。
每個CodeSmith模板第一步都是要指明這是一個C#語言的模板,這條語句告訴CodeSmith一些基本的資訊:
<%@ CodeTemplate Language="C#" TargetLanguage="C#" Description="Create an AssemblyInfo.cs file." %>
Language屬性主要表明模板本生將使用什麼語言;TargetLanguage屬性主要是指明輸出的代碼是什麼語言。Description屬性描述模板的作用,這段說明性文字會在CodeSmith Explorer和CodeSmith Studio做為一個提示顯示出來。
把這一句代碼另存新檔AssemblyInfo.cst,現在你就產生了一個CodeSmith模板。但它什麼用都沒有,不要著急,接著往下讀。
很多人問我怎麼用最快的方法學會建立一個CodeSmith模板,那麼我告訴你,就是先看看你的模板想要產生的程式碼,現在我們就來看看一個AssemblyInfo.cs代碼:
1using System.Reflection;
2using System.Runtime.CompilerServices;
3//
4// Created: Friday, July 1, 2005
5// Author: Alan Maxwell
6//
7[assembly: AssemblyTitle("User storage utility")]
8[assembly: AssemblyDescription("Helps manage data in Isolated Storage files.")]
9[assembly: AssemblyConfiguration("Retail")]
10[assembly: AssemblyCompany("MegaUtilities, Inc.")]
11[assembly: AssemblyProduct("StorageScan")]
12[assembly: AssemblyCopyright("Copyright (c) 2005 MegaUtilities, Inc.")]
13[assembly: AssemblyCulture("")]
14[assembly: AssemblyVersion("1.0.*")]
15[assembly: AssemblyFileVersion("1.0")]
16[assembly: AssemblyDelaySign(true)]
現在你仔細看看你想產生的程式碼,你需要把代碼內容分為三種:
(1)從來不會改變的內容
(2)能夠自動產生的內容(紅色)
(3)需要使用者指定產生的內容(綠色)
在上面的例子中,我們把自動產生的部分標記為紅色,把需要使用者指定產生的標記為綠色,剩下的為靜態內容。當然如何做到對這三種內容的區分要靠你自己對你要產生的程式碼的判斷。
現在我們知道了我們到底要建立一個什麼樣的模板,下一節我們就來編寫模板內容