为Visual Studio添加项目模板及项模板

2023-05-16

1 问题的引入

在做项目的时候,需要代码规范,版本信息不可或缺,但是每次在文件头COPY版本信息很麻烦,而且也不太容易控制。为了更好、更规范的去完成项目,需对项目文件做统一的格式来处理。

2 环境描述

OS: WINDOWS 2003

开发环境:VS2008

语言:C#

架构:C/S B/S

3知识准备

3.1 VS项目模板及项模板位置

默认情况下,与产品一起安装的模板位于以下位置:

  • /Common7/IDE/ItemTemplates/语言/区域设置/
  • /Common7/IDE/ProjectTemplates/语言/区域设置/

(此处为微软提供位置,实际处理中与此信息有所出入,具体位置见下文)

3.2 VS模板介绍

一个模板的例子:

<VSTemplate Type="Project" Version="2.0.0"

    xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">

    <TemplateData>

        <Name>My template</Name>

        <Description>A basic starter kit</Description>

        <Icon>TemplateIcon.ico</Icon>

        <ProjectType>CSharp</ProjectType>

    </TemplateData>

    <TemplateContent>

        <Project File="MyStarterKit.csproj">

            <ProjectItem>Form1.cs<ProjectItem>

            <ProjectItem>Form1.Designer.cs</ProjectItem>

            <ProjectItem>Program.cs</ProjectItem>

            <ProjectItem>Properties/AssemblyInfo.cs</ProjectItem>

            <ProjectItem>Properties/Resources.resx</ProjectItem>

            <ProjectItem>Properties/Resources.Designer.cs</ProjectItem>

            <ProjectItem>Properties/Settings.settings</ProjectItem>

            <ProjectItem>Properties/Settings.Designer.cs</ProjectItem>

        </Project>

    </TemplateContent>

</VSTemplate>

 

3.2.1 VSTemplate元素

VSTemplate 元素是 .vstemplate 文件的根元素,其属性如下:

属性

说明

Type

将模板标识为项目模板或项模板。此属性的值可以为 Project Item

Version

指定模板的版本号。Visual Studio 2005 中的模板的 Version 属性值为 2.0.0

 

子元素

元素

说明

TemplateData

必选元素。指定将此模板分类的数据,并定义此模板在新建项目添加新项对话框中的显示方式。

TemplateContent

必选元素。指定模板的内容。

WizardExtension

可选的元素

WizardData

可选的元素

3.2.2 模板参数

所有模板都支持在对模板进行实例化时进行参数替换,以替换关键参数,如类名和命名空间。当用户在“新建项目”或“添加新项”对话框中单击“确定”时,这些参数将由后台运行的模板向导替换。

模板参数以 $参数$ 格式进行声明。如:$safeprojectname$。

模板的保留参数如下表:

参数

说明

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

当前的用户名

webnamespace

当前网站的名称。在 Web 窗体模板中使用此参数以确保类名称是唯一的。如果网站位于 Web 服务器的根目录下,则此模板参数将解析为 Web 服务器的根目录

year

YYYY 格式表示的当前年份

4 添加各模板

上面的一些知识点可能会有些凌乱,但都是在后文中会用到的,所以上面的要了解下。

添加模板分为两类,一类是新建项目时的项目模板,一类是在项目中添加新项时的项模板。其步骤如下:

● 制作模板

● 将模板COPY到指定位置

● 重设VS环境

4.1 添加项目模板

此处将以做一个C/S的WINFORM模板来说明添加一个模板的操作方法,其他项目模板类似,只有路径上有所不同,路径不同的会给出相关路径。

4.1.1 制作模板

MICRO提供了制作模板的方法,http://msdn.microsoft.com/zh-cn/library/xkh1wxd8.aspx,但我在操作时没有按照这样的方法来处理,我的作法是将已有的模板COPY出来,修改,放到新的文件夹,步骤如下:

● 将/Common7/IDE/ProjectTemplates/CSharp/Windows/2052下的WindowsApplication.zip文件COPY出来。

● 解压,如图1

clip_image002

图1 windowsApplication.zip

● 修改form1,修改前如图2,修改后如图3,注意图中红色的位置即3.2.2中提到的模板参数

clip_image004

图2 form1.cs修改前

clip_image006

图3 form1.cs修改后

● 同样修改Program.CS,assemblyinfo.cs文件

● 修改csWindowsApplication.vstemplate,如图4

clip_image008

图4 csWindowsApplication.vstemplate

● 修改windowsapplication.csproj,因为我修改了program.c的文件名,才需修改此文件,如无修改文件名则不需修改此文件。

● 将所有文件压缩为WindowsApplication.zip,注意压缩时不能加文件夹,如图5

clip_image010

图5 压缩文件示意图

至此,WINFORM的项目模板已做好。

4.1.2 将模板COPY到指定位置

我的做法是将/Common7/IDE/ProjectTemplates/CSharp/Windows下的所有内容COPY到一个新的文件夹,如 COMP WINDOWS,删除COMP WINDOWS/2052下的所有内容,将上文生成的模板放在2052目录下,将COMP WINDOWS COPY到/Common7/IDE/ProjectTemplates/CSharp/

4.1.3 重设VS环境

打开Visual Studio 2008 命令行工具,执行devenv /setup,其路径如下图:

clip_image012

图6:VISUAL STUDIO 2008工具打开方式

你可以通过这样的方法根据需要做自己的模板(WINFORM程序)。看一下效果:打开VS,新建、新建项目,出现如下图:

clip_image014

图7:最终效果

4.1.4 添加B/S项目模板

上文是添加C/S项目模板的方法,添加B/S项目模板的方法与其类似,有区别的地方在于COPY模板的地方,B/S将生成的模板直接COPY到 /Common7/IDE/ProjectTemplates/CSharp/Web/2052即可,注意要将压缩文件改名,以免覆盖原有的文件。

4.2 添加项模板

制作过程与4.1同,要注意的地方是项模板的位置。

C/S项模板的位置:/Common7/IDE/ItemTemplates/CSharp/Code/2052 类模板位置;/Common7/IDE/ItemTemplates/CSharp/Windows Forms/2052 窗体模板位置

B/S模板位置:/Common7/IDE/ItemTemplates/Web/CSharp/2052,包括类、ASP窗体、WEB服务、用户控件等均在此处。

COPY的方式同4.1.4

最终的效果图:

clip_image016

图8:添加新项效果图

clip_image018

图9:新加类的效果图

5 结束语

至此,所有的添加工作完成,VS模板可以自定义参数,但由于在此处没有太大的用处,故未使用。

值得注意的地方为:

● 要注意压缩为ZIP。

● 如果是英文版的话,要将文中的2502目录改为1033。(此条未测试,是我估计的)

6 参考资料

名称

出处

创建项目模板

http://msdn.microsoft.com/zh-cn/library/xkh1wxd8.aspx

手动创建项目模板

http://msdn.microsoft.com/zh-cn/library/ms185291.aspx

替换模板中的参数

http://msdn.microsoft.com/zh-cn/library/ms185311.aspx

查找和组织项目模板和项模板

http://msdn.microsoft.com/zh-cn/library/y3kkate1.aspx

VSTemplate 元素(Visual Studio 模板)

http://msdn.microsoft.com/zh-cn/library/31cdwx28%28VS.80%29.aspx

模板参数

http://msdn.microsoft.com/zh-cn/library/eehb4faa.aspx

向模板传递自定义参数

http://msdn.microsoft.com/zh-cn/library/ms247063.aspx

 

作者: xzavier
出处: http://blog.csdn.net/qiaozhiwei
本文版权归作者和CSDN共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为Visual Studio添加项目模板及项模板 的相关文章

随机推荐

  • 解决Ubuntu虚拟机地无法上网问题

    虚拟机软件 xff1a VMware xff0c 操作系统 xff1a Ubuntu20 04 1 笔者安装好Unbutu20 04 1的虚拟机之后一直遇到一个问题 xff0c 网络图标不显示 xff0c 网络也不可用 每次都要把 虚拟网络
  • python中wraps的详解

    1 name 用来显示函数的名称 xff0c doc 用来显示文档字符串也就是 34 34 文档字符串 34 34 这里面的内容 2 首先我们来看不加 64 wraps的例子 span class token keyword def spa
  • 读书笔记-深度学习推荐系统1-概述章节

    推荐系统充斥于互联网的各个角落 xff0c 听音乐 看视频 看新闻 购物 学习课程等等 1 1 推荐系统的作用 用户 xff1a 在信息过载的情况下 xff0c 帮助用户高效获得感兴趣的信息 公司 xff1a 通过推荐吸引用户留存 增加用户
  • C++算法之——常用算法总结

    基本的C 43 43 算法分为三类 xff1a 排序算法 树算法 图算法 算法思想有三种 xff1a 递推 分治 动态规划 以及 贪心算法 本文将简要介绍上面三类算法 xff0c 介绍时穿插介绍算法思想 一 排序算法 1 基本O n 2 排
  • xfs 文件系统的备份和恢复(包含磁盘挂载)

    一 xfs文件系统备份简介 XFS 提供了 xfsdump 和 xfsrestore 工具协助备份 XFS 文件系统中的数据 xfsdump 按 inode顺序备份一个 XFS 文件系统 centos7 开始选择 xfs 格式作为默认文件系
  • 正则的基本用法

    一 了解正则表达式 正则表达式是对字符串操作的一种逻辑公式 xff0c 就是用事先定义好的一些特定字符 及这些特定字符的组合 xff0c 组成一个 规则字符串 xff0c 这个 规则字符串 用来表达对字符串的一种过滤逻辑 正则表达式是用来匹
  • windows10 配置 VNC server

    windows10 配置 VNC server 配置 VNC server并设置 当客户端连接vnc server端时不能通过键盘和鼠标控制服务端 下载windows版 https www realvnc com en connect do
  • 二叉树的前序,中序,后序遍历

    前序遍历 xff1a 根节点 gt 左子树 gt 右子树 xff08 根 gt 左 gt 右 xff09 中序遍历 xff1a 左子树 gt 根节点 gt 右子树 xff08 左 gt 根 gt 右 xff09 后序遍历 xff1a 左子树
  • Java拉姆达表达式

    目录 语法 lambda表达式的重要特征 变量作用域 Lambda 表达式 xff0c 也可称为闭包 xff0c 它是推动 Java 8 发布的最重要新特性 Lambda 允许把函数作为一个方法的参数 xff08 函数作为参数传递进方法中
  • activiti修改流程定义二进制数据后需清缓存

    示例如下 package com zz flow utils import org activiti engine impl interceptor Command import org activiti engine impl inter
  • Ubuntu 12.04 LTS 中文输入法的安装

    安装 Ubuntu 12 04 着实费力一番功夫 xff0c 老是在用 Ubuntu 来引导 Windows xff0c 结果 Ubuntu 倒是能用 xff0c 一进入 Windows 就蓝屏 xff0c 于是又重装 Windows 好几
  • stream buffer原理

    Stream buffer是一个用于在cache和memory或者L1cache和L2cache之间的预取器 xff0c 相应地 xff0c 其目的是用于替代L2cache或者减少L1cache的缺失率 最原始的streambuffer由J
  • 原创:纠正国人对Linux的误解和错误认识之二

    或问 xff1a Linux兼容性差 真的是这样吗 xff1f 从2 6 30内核开始 xff0c 驱动程序占整个内核的代码比率首次超过50 xff05 就在2009年圣诞节那天 xff0c Linus Torvalds 在给大家发的圣诞快
  • linux vnc登陆黑屏问题

    1 现象描述 桌面背景全黑 xff0c 没有右上角的设置按钮 2 添加新用户步骤 命令 xff1a 1 useradd xy 2 passwd xy 3 输入密码 4 vim etc sudoers xff0c 将xy添加下面 5 在roo
  • 读书笔记-深度学习推荐系统9-推荐系统知识框架

    针对某一个领域 xff0c 建立自己的技术框架是最重要的 xff0c 只有建立了知识框架 xff0c 才能在这个框架中开枝散叶 xff0c 思考细领域的问题时 xff0c 见微知著的同时 xff0c 也不会忘记整体 9 1 知识架构图 9
  • shell将命令输出结果保存到变量中的3种常用方式

    shell将命令输出结果保存到变量中的几种形式及相应的输出结果 xff0c 使用时须注意对应关系 xff0c 记录在此以便使用时查找比较 bin bash abc 61 34 echo 66666666666666666 34 只用一个 3
  • SphereFace的翻译,解读以及训练

    前段时间 xff0c 由于工作需要 xff0c 学习了一下论文 SphereFace Deep Hypersphere Embedding for Face Recognition 收获挺大的 xff0c 这几天刚好有空 xff0c 就整理
  • IDEA2019,springboot2.1 .6 热部署配置 完整版

    1 修改pom文件 xff0c 增加配置 lt dependency gt lt groupId gt org springframework boot lt groupId gt lt artifactId gt spring boot
  • casbin模型

    目录 一 PERM元模型二 基础代码实现步骤1 创建main go步骤2 创建model conf步骤3 创建policy csv 三 role definition 角色域的用法g 61 的用法1 model文件2 policy文件 g
  • 为Visual Studio添加项目模板及项模板

    1 问题的引入 在做项目的时候 xff0c 需要代码规范 xff0c 版本信息不可或缺 xff0c 但是每次在文件头COPY版本信息很麻烦 xff0c 而且也不太容易控制 为了更好 更规范的去完成项目 xff0c 需对项目文件做统一的格式来