VS2005文件模板的定制

首先编写你的文件模板的原型:简单地说,新建的文件将是你提供文件的副本,当然你的文件中可以包含一些关键字,这些关键字或在使用模板生成新文件时被开发环境所替换。我们可以参考系统提供的模板中,winform窗体代码文件的内容:
#region Using directives

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

#endregion

namespace $rootnamespace$
{
 partial class $safeitemrootname$: Form
 {
  public $safeitemrootname$()
  {
   InitializeComponent();
  }
 }
}

习惯使用标记的人一眼可以看出,$rootnamespace$和$safeitemrootname$就是刚才我提到的关键字,分别代表当前项目的缺省命名空间和用户提供的命名。 接着编写模板文件,模板文件是一个XML文件,后缀为.template,其格式可以参考开发环境提供的模板C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033我没有找到好的文档描述文件格式,但我们可以照着开发环境提供的模板依葫芦画瓢,下面是系统模板文件
<VSTemplate Version="1.1.0" Type="Item">
 <TemplateData>
  <Name>
   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2237"/>
  </Name>
  <Description>
   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="2264"/>
  </Description>
  <Icon>
   <Package GUID="{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}" ID="4535"/>
  </Icon>
  <ProjectType>
   <Languages>
    <Language>CSharp</Language>
   </Languages>
  </ProjectType>
  <SortOrder>10</SortOrder>
  <DefaultName>Form.cs</DefaultName>
 </TemplateData>
 <TemplateContent>
  <References>
   <Reference>
    <Assembly>System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Drawing, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Xml, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
  </References>
  <ProjectItem>
   <SourceFile>Form.cs</SourceFile>
   <ReplaceParameters>true</ReplaceParameters>
   <SubType>Form</SubType>
  </ProjectItem>
  <ProjectItem>
   <SourceFile>Form.Designer.cs</SourceFile>
   <ReplaceParameters>true</ReplaceParameters>
  </ProjectItem>
 </TemplateContent>
</VSTemplate>

首先,我们研究一下TemplateData节,包含nane,description,icon分别代表名字,描述和图标,在我们newItem的时候,他们显示在列表框中。那些GUID,ID我想它无非是去定位资源的位置而已。Icon我没有办法提供,名字和描述我可以直接写的。另外一个节点TemplateContent中描述的是模板需要的依赖和文件内容,可以包含多个文件,如Winform根据上面的分析,我们尝试书写模板如下:
1,代码文件
#该代码由大坏蛋的模板生成
#region Using directives
using System;
using System.Text;
using System.Windows.Forms;
#endregion

namespace $rootnamespace$
{
 class $safeitemrootname$: Control
 {
  public $safeitemrootname$()
  {
  }
 }
}

2,模板文件
<VSTemplate Type="Item" Version="1.1.1">
 <TemplateData>
  <Name>
   <String>TestTemplate</String>
  </Name>
  <Description>
   <String>TestTemplate for joycode</String>
  </Description>
  <ProjectType>
   <Languages>
    <Language>CSharp</Language>
   </Languages>
  </ProjectType>
  <DefaultName>Test.cs</DefaultName>
 </TemplateData>
 <TemplateContent>
  <References>
   <Reference>
    <Assembly>System, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
   <Reference>
    <Assembly>System.Windows.Forms, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</Assembly>
   </Reference>
  </References>
  <ProjectItem>
   <SourceFile>dhd.cs</SourceFile>
   <ReplaceParameters>true</ReplaceParameters>
  </ProjectItem>
 </TemplateContent>
</VSTemplate>

3,将这两个文件压缩成一个ZIP包,将该ZIP文件拷贝到C:\Documents and Settings\chenchangjian.H2000\My Documents\Visual Studio\ItemTemplates\Visual C#下,打开你的开发环境试试吧!
注意:居然不支持中文!