继续的自定义模板的话题,我们进行定义更完美的模板。首先我们来分析一个Visual Studio模板文件的构成。Visual Studio 2005导出的模板的位置是在“[我的文档]\Visual Studio 2005\My Exported Templates\”文件夹中,而对于项模板,要想应用到“添加新项”的对话框中,必须把模板copy到“[我的文档]\Visual Studio 2005\Templates\ItemTemplates”。
我们可以看到一个模板文件就是一个zip文件,解压该文件,我们会看到三个文件,.ico, .cs, .vstemplate,ico是显示在“添加新项”对话框中显示的图标,.cs文件就是我们定义的模板原文件,而vstemplate文件,是一个xml文件,该文件定义了模板的元数据,对于Visual Studio 2005,该文件的schema文件保存在“[Visual Studio InstallDirectory]\Xml\Schemas\2052\vstemplate.xsd”中,下面是该文件的一个原型,
MyClassTemplate.cs MyClassTemplate <没有可用的说明> CSharp 10 __TemplateIcon.ico MyClassTemplate1.cs
至于各个结点的说明,大家可以参考上面提到的schema文件,或者msdn(ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.en/dv_vsxmlref/html/6f74a2d5-3811-43d6-8b10-eb5823ad8995.htm),在<TemplateContent>结点下有一个子结点<CustomParameters>,在该结点下,我们可以方便的定义自己的模板参数,如下,
... ...
上面我们定义了一个参数$MyParameter1$,该参数的值为MyValue1,自定义的模板参数跟VS提供的默认模板参数的使用方法一样,我们可以直接在模板原文件中使用,如下所示:
#region Copyright (C) Rainsoft All rights reserved /******************************************************************************************* * Creation: * Author: $username$ * Date: $time$ * Description: $MyParameter1$ * Version: * Modification: * Author: * Date: * Description: * Version: *******************************************************************************************/ #endregion namespace $rootnamespace$ { using System; public class $itemname$ { } }
我们在Description中使用了我们刚才定义的模板参数$MyParameter1$,VS在根据该模板生成新项时,会自动的把我们定义的模板参数定义成相应的值,但这个值只能是静态的值,不能动态生成,比如在很多公司中登录windows的用户名可能是公司的内部员工编号,不适合作文件头定义中的Author项,通过定义模板参数,我们就可以解决这个问题,但对于自定义格式的Date项,这种方式还不行,下一篇文章我将提供最终的解决方法。