在CodeSmith 使用教程(1): 概述我們通過使用CodeSmith從數據庫自動生成NHiberate代碼,可以了解到使用CodeSmith自動 生成代碼的基本步驟:
選擇使用合適的模板,CodeSmith隨開發包自帶了大量常用的模板,如果找不到合適的模板,CodeSmith支持自定義模板。
為模板選擇合適的參數設置。
自動生成代碼(可以為任意類型的代碼,C#,Java, .XML 文本等)
其核心為代碼模板文件,隨CodeSmith自帶了不少常用的模板,可以通過模板浏覽器來查詢,此外網上也有很多第三方開發的 模板,在使用前可以先查查是否已有現成的模板,或是可以通過修改現有的模板來完成自動生成代碼的需要。
在開發應 用時,很多人都喜歡通過復制以前的項目中的代碼,然後通過修改以滿足新項目,這些重用的代碼通常具有很多共性(可以想想 C++的模板類,C#的Generic等),CodeSmith就是用來為這些具有相似性的代碼創建模板,然後通過設置屬性(代碼直接的不同 點),就可以自動創建所需代碼。
本例通過一個簡單的例子來介紹創建一個自定義代碼模板的方法。CodeSmith提供了 Visual Studio的集成開發環境的支持,本例也是通過創建模板自動生成簡化每個的C#項目都需要的 AssemblyInfo.cs, 在開發C# 應用時,一般是通過手工修改AssemblyInfo.cs的中屬性(或者是Copy & Paste :-)).
首先我們使用 Visual Studio創建一個C# HelloWorld下面(Console或是WinForm項目都可以),可以打開項目中的 AssemblyInfo.cs
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("HelloWorld")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Microsoft")] [assembly: AssemblyProduct("HelloWorld")] [assembly: AssemblyCopyright("Copyright ? Microsoft 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("72797715-64b9-4bab-a49f-f55e8a0a18d7")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]
為了使用CodeSmith,我們在HelloWorld中添加CodeSmith的項目文件 並創建一個模板文件AssemblyInfo.cst