首先打开【Visual Studio 2005】C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE
【Visual Studio 2005】C:/Program Files/Microsoft Visual Studio 8/Common7/IDE),可以看到如下的情况:
其中ItemTemplates文件中存放着我们向项目添加文件时的模板,ProjectTemplates文件夹顾名思义存放着我们创建项目的模板。这些文件夹中的模板分别会在我们创建文件或者项目时出现。,另外还有一个ProjectTemplatesCache和ItemTemplatesCache,这是vs使用的模板缓存。
除了这些模板之外,Visual Studio在新建时还会搜索当前用户的个人模板,如果没有经过这种这样的特殊设置,路径为C:/Documents and Settings/用户名/My Documents/Visual Studio 2008/Templates,打开这个文件夹,我们看到如下情况:
在没有做任何配置的时候这两个文件夹都是空的,在此时如果我们向项目中添加文件会看到这样的情况,如下图:
从上图可以看出,我的模板是空的。
OK,将C:/Program Files/Microsoft Visual Studio 9.0/Common7/IDE下的ItemTemplates和ProjectTemplates文件夹拷贝到了当前个人配置文件夹C:/Documents and Settings/用户名/My Documents/Visual Studio 2008/Templates下,可能系统会提示是否覆盖,点击确认之后我们再在任何项目中创建新文件会看到下面的情况,如下图所示:
如何改造:打开系统或个人配置的Templates/ItemTemplates/CSharp/Code/2052【1033表示英语。2052表示中文】,在这个文件夹下有许多zip文件,其中Class.zip、CodeFile.zip、Interface.zip和NETCFv2-Class.zip,分别对应的是添加类、代码文件、接口及.NET Compact Framework类的模板,在每个zip压缩包里都有一个.cs文件和一个.vstemplate文件。比如将Class.zip解压出来,这时的class.cs文件代码如下:
using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ == 3.5)using System.Linq; $endif$using System.Text; namespace $rootnamespace$ { class $safeitemrootname$ { } }
将代码更改如下:
using System; using System.Collections.Generic; $if$ ($targetframeworkversion$ == 3.5)using System.Linq; $endif$using System.Text; namespace $rootnamespace$ { #region Version Info /* ======================================================================== * 【本类功能概述】 * * 作者:奔跑的蜗牛 * 时间:$time$ * 公司: $registeredorganization$ * CLR版本:$clrversion$ * QQ:454096521 * $safeitemrootname$说明:本代码版权归作者所有 * 唯一标识:$guid1$ * 修改说明: * ========================================================================= */ #endregion public class $safeitemrootname$ { $safeitemrootname$() { } } }
保存class.cs,然后利用压缩软件将class.cs和刚刚从Class.zip中解压出来Class.vstemplate文件压缩为Class.zip文件(注意一定要压缩成zip文件而不是rar或者其它格式文件,WinRAR提供这种功能),然后替换原来的Class.zip文件。
好了,现在我们可以检验我们的成果了。随便打开一个项目,按照“添加”-“新建项”的步骤添加,在弹出的对话框中“我的模板”下选择“类”(因为我们刚刚改的就是我的模板中添加的类的模板),这时Visual Studio 2008按照模板生成的代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace WCFClient { #region Version Info /* ======================================================================== * 【本类功能概述】 * * 作者:奔跑的蜗牛 * 时间:2010-6-20 9:39:04 * 公司: rysoft * CLR版本:2.0.50727.3603 * QQ:454096521 * Class1说明:本代码版权归作者所有 * 唯一标识:f7d4bfbe-accd-4d86-92b0-1407db886ae1 * 修改说明: * ========================================================================= */ #endregion public class Class1 { Class1() { } } }
在模板中我们可以使用“保留的模板参数”,亦可以使用自定义模板参数。
保留的模板参数有如下13个,其中GUID又可以变化出十个参数(模板参数区分大小写):
clrversion 公共语言运行库 (CLR) 的当前版本。
GUID [1-10] 用于替换项目文件中的项目 GUID 的 GUID。最多可以指定 10 个唯一的 GUID(例如,guid1))。
itemname 用户在添加新项对话框中提供的名称。
machinename 当前的计算机名称(例如,Computer01)。
projectname 用户在新建项目对话框中提供的名称。
registeredorganization HKLM\Software\Microsoft\Windows NT\CurrentVersion\RegisteredOrganization 中的注册表项值。
rootnamespace 当前项目的根命名空间。此参数用于替换正向项目中添加的项中的命名空间。
safeitemname 用户在“添加新项”对话框中提供的名称,名称中移除了所有不安全的字符和空格。
safeprojectname 用户在“新建项目”对话框中提供的名称,名称中移除了所有不安全的字符和空格。
time 以 DD/MM/YYYY 00:00:00 格式表示的当前时间。
userdomain 当前的用户域。
username 当前的用户名。
year 以 YYYY 格式表示的当前年份。
自定义模板参数:
下面的示例演示如何在一个模板中使用多个自定义参数。如果项目或项是使用下面的自定义参数从某个模板创建而成,则将模板文件中 $color1$ 和 $color2$ 的所有实例分别替换为 Red 和 Blue。
<CustomParameters>
<CustomParameter Name="$color1$" Value="Red"/>
<CustomParameter Name="$color2$" Value="Blue "/>
</CustomParameters>
3.其它可用的参数:
在.cs页面使用的模板参数:
namespace $safeprojectname$
public partial class $classname$ 或者
public partial class $safeitemrootname$
在.aspx页面使用的模板参数:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="$fileinputname$.aspx.cs" Inherits="$rootnamespace$.$classname$" CodePage="936"%>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="InfoEdit.aspx.cs" Inherits="Examples.TableOp.InfoEdit" CodePage="936"%>
在.vstemplate中使用的模板参数:
<ProjectItem ReplaceParameters="true" TargetFileName="$fileinputname$.$fileinputextension$">Default.aspx</ProjectItem>
注:如果直接修改的系统模版而不是拷贝来的个人配置里的模版,修改后需在开始——》程序中Visual Studio Tools 下有Visual Studio 命题提示行工具,运行 devenv /setup进行修改模版的重新注册(1分钟左右),系统原始模版将丢失,需要事先备份对应的VS模版。