【翻译】最新版CodeSmith3.2(.net2.0)教程之三:了解你要创建一个什么模板

摘要:我们回顾一下上一节的内容:我们学会了用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代码:

 1 using  System.Reflection;
 2 using  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)需要用户指定生成的内容(绿色)

在上面的例子中,我们把自动生成的部分标记为红色,把需要用户指定生成的标记为绿色,剩下的为静态内容。当然如何做到对这三种内容的区分要靠你自己对你要生成的代码的判断。

现在我们知道了我们到底要创建一个什么样的模板,下一节我们就来编写模板内容

你可能感兴趣的:(.net)