我们编写项目的时候,很多时候都是在写重复代码,比如一个比较完整的框架,然后下面有很多代码都是重复的Copy,其实我们可以利用Visual Studio的模板替我们干这些活,我们只要关注项目具体的业务就可以了;
下面我们开始:
1、模板类别
项目模板、项模板
其中,项目模板是创建项目用的,项模板是创建项用的
项目模板:
项模板:
下面我们创建项目模板
首先,将要制作成模板的项目打开,选中项目,点击文件-》导出项目模板,弹出导出模板向导
然后填写相关信息,点击完成,这样就导出模板成功了
现在,很关键的一步就是修改导出的模板
解压刚才导出zip文件
打开.vstemplate文件
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>ConsoleApplication2</Name> <Description><没有可用的说明></Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ConsoleApplication2</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="ConsoleApplication2.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="CodeTimer.cs">CodeTimer.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> </Folder> </Project> </TemplateContent> </VSTemplate>
TemplateData节点是模板的说明,Name:模板名称,Description:模板描述,ProjectType:项目类型,
修改TemplateContext节点
TargetFileName:模板生成的文件名称 (如:TargetFileName="$safeprojectname$.csproj")
File:模板文件
ReplaceParameters:是否替换占位符,微软定义的占位符见附录,当然还可以自定义占位符
修改完成之后
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>ConsoleApplication2</Name> <Description><没有可用的说明></Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ConsoleApplication2</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="$safeprojectname$.csproj" File="ConsoleApplication2.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="$safeprojectname$CodeTimer.cs">CodeTimer.cs</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> </Folder> </Project> </TemplateContent> </VSTemplate>
打开用记事本csproj项目文件
修改ItemGroup
<ItemGroup> <Compile Include="$safeprojectname$CodeTimer.cs" /> <Compile Include="Program.cs" /> <Compile Include="PropertiesAssemblyInfo.cs" /> </ItemGroup>
修改完成之后压缩成Zip文件,放到下面的目录,在vs里面就可以使用刚才创建的模板了
(vs安装位置)Visual Studio 2013TemplatesProjectTemplates
附录:
参数 |
描述 |
---|---|
clrversion |
公共语言运行时 (CLR) 的当前版本。 |
GUID [1-10] |
用于替换项目文件中的项目 GUID 的 GUID。 最多可以指定 10 个唯一的 GUID(例如,guid1))。 |
itemname |
用户在添加新项对话框中提供的名称。 |
machinename |
当前的计算机名称(例如,Computer01)。 |
projectname |
用户在新建项目对话框中提供的名称。 |
registeredorganization |
HKLMSoftwareMicrosoftWindows NTCurrentVersionRegisteredOrganization 中的注册表项值。 |
rootnamespace |
当前项目的根命名空间。 此参数仅适用于项目模板。 |
safeitemname |
用户在“添加新项”对话框中提供的名称,名称中移除了所有不安全的字符和空格。 |
safeprojectname |
用户在“新建项目”对话框中提供的名称,名称中移除了所有不安全的字符和空格。 |
time |
以 DD/MM/YYYY 00:00:00 格式表示的当前时间。 |
SpecificSolutionName |
解决方案的名称。 当“创建解决方案的目录”被选中,SpecificSolutionName 具有解决方案的名称。当“创建解决方案的目录”没有被选中,SpecificSolutionName是空。 |
userdomain |
当前的用户域。 |
username |
当前的用户名。 |
webnamespace |
当前网站的名称。 在 Web 窗体模板中使用此参数以确保类名称是唯一的。 如果网站位于 Web 服务器的根目录下,则此模板参数将解析为 Web 服务器的根目录。 |
year |
以 YYYY 格式表示的当前年份。 |