~在思考中沉淀~
博客园
首页
新随笔
联系
订阅
管理
21 Posts :: 0 Stories :: 68 Comments :: 0 Trackbacks
公告
微软免费计数器
MSN:[flyingbird@vip.sina.com ]
我的主页
个人资料
我的闪存
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
我参与的团队
SharePoint团队(0/0)
随笔分类
Asp.net(3)
MS .Net相关(3)
读书心得(1)
技术视点(5)
生活随笔(9)
随笔档案
2006年1月 (2)
2005年4月 (1)
2005年3月 (2)
2005年1月 (9)
2004年12月 (7)
文章分类
asp.net
winform
项目开发
收藏夹
管理
技术
.Net~英文
blog@msdn.com
MSDN
theserverside
webblogs@asp.net
.Net~中文
MSDN
博客堂
工作流
管理
项目管理者联盟
职业经理进修手册
中国项目管理网
最新评论
1. Re:学习SQL Server全文索引
针对SQL 2005的全文索引,对用户输入的搜索词,如何有效地分词,请问LZ有没有好的做法,希望分享一下!
--一直在路上
2. re: 学习SQL Server全文索引
--引用-------------------------------------------------- kaixin110: 更新了数据,索引的速度慢,怎么办? ----------------...
--xiaogemm
3. re: 学习SQL Server全文索引
--引用-------------------------------------------------- hhhh: 数据量小的话用索引还不如不用呢 -----------------------...
--xiaogemm
4. re: 科技对生活的影响
--引用-------------------------------------------------- 不管人们有没有意识到,科学技术已经深深的影响着我们的日常生活,在经济社会发展扮演着不可或缺...
--爱爱爱
5. re: 科技对生活的影响
不管人们有没有意识到,科学技术已经深深的影响着我们的日常生活,在经济社会发展扮演着不可或缺的角色。21世纪以来,科学技术,尤其是计算机网络技术、电子信息技术的飞速发展,使得手机、电脑那些昂贵的奢侈品步...
--kqak;lak
阅读排行榜
1. 科技对生活的影响(8658)
2. 学习SQL Server全文索引(6447)
3. 开始GMail之旅(3130)
4. 创建自定义的Visual Studio项模板(3039)
5. VS2005中通过code snippet定制类模板(2908)
评论排行榜
1. 科技对生活的影响(11)
2. WhoIsOnline ;) - 解读CNForum源码中在线用户统计(10)
3. 有要Gmail的吗?;)[已结束!](8)
4. 开始GMail之旅(8)
5. 学习SQL Server全文索引(8)
创建自定义的Visual Studio项模板
关键词:
VisualStudio 模板 VSDIR VIZ
目的: 创建自己的Visual Studio类模板,以创建实现单例模式(Singleton)的类为例。
1、何为模板?
可以通过两个例子来简单说明一下。
当我们在Visual Studio.Net中选择新建项目时,向导通常会提供一些预定义类型的项目供选择,比如“Window应用程序”、“ASP.NET Web应用程序”等。只要你选定其中一个并确定,VS会自动相应的项目结构和部分它认为有用的代码。这些供选择的东东就是模板的一种,叫
项目模板(Project Template)
。
当我们要在项目中增加某种文件,通常可以使用“添加新项”来实现。例如增加一个新的类或是XML文件等等。此时我们所选择选择的类型也是VS预定义的模板的一种,叫
项模板(Item Template)。
2、为什么要使用模板?
模板的着眼点是开发效率上,也就是说通过这些模板我们可以让VS自动生成一些常用的文件,并初始化结构和代码以加快开发速度。
典型的就是VS中“添加新项”时可供选择的那些模板(如组件类、用户控件等等)。
这篇Post主要关注的是
项模板
的创建及应用。创建项目模板的方式与此类似可以参考:
http://www.carlosag.net/Articles/createVSTemplate.aspx
。
3、用项模板来做什么?
既然要创建自己的项模板,那么就要明确打算让这个模板来做什么。既然前面提到了模式,那创建一个能够自动实现单例模式(Singleton)的类的项模板。(BTW:关于Singleton模式本身可以参见:
http://www.yoda.arachsys.com/csharp/singleton.html
。关于它讨论,这里有一篇
http://www.jdon.com/jive/article.jsp?forum=91&thread=17578
。)
这里先给出一种最简单的实现Singleton模式的示例:
public
sealed
class
Singleton
{
static
Singleton instance
=
null
;
Singleton()
{
}
public
static
Singleton Instance
{
get
{
if
(instance
==
null
)
{
instance
=
new
Singleton();
}
return
instance;
}
}
}
4、如何创建项模板?
创建一个项模板需要完成以下几步:
a、创建项模板的VSDIR文件 [ VSDIR文件的描述可以参见
http://msdn.microsoft.com/library/chs/default.asp?url=/library/chs/vsintro7/html/vxconvsdirfiles.asp
]
b、创建VSZ文件(项目控件)[ VSZ文件的描述可以参见
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vccore/html/vclrfunderstandingprojectcontrolfiles.asp
]
c、定制javascripts
d、创建文件模板
下面就逐一展开。
创建VSDIR文件
-打开文件夹<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems\Code
打开code.vsdir文件,并在其中添加如下内容:
..\..\CSharpAddSingletonClassWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Singleton类|11|Singleton类|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4515|0|SingletonClass.cs
* 注意:
以上内容不要换行。这个文件格式定义见
VSDIR文件描述
。
其中CSharpAddSingletonClassWiz.vsz是指所使用的vsz文件(项目控件)的位置。
如后面的图中显示的,添加此内容后Singleton类模板将出现在“本地项目项”的“代码”分支下。如果需要在“本地项目项”下也显示此“Singleton类”模板,则需要在<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems\LocalProjectItems目录下的LocalProjectItems.vsdir文件中添加:..\CSharpAddSingletonClassWiz.vsz|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|Singleton类|11|Singleton类|{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}|4515|0|SingletonClass.cs
创建VSZ文件
-打开文件夹<Program Files>\Microsoft Visual Studio .NET 2003\VC#\CSharpProjectItems
创建文件CSharpAddSingletonClassWiz.vsz,在其中添加如下内容:
VSWIZARD 7.0
Wizard=VsWizard.VsWizardEngine.7.1
Param="WIZARD_NAME = CSharpAddSingletonClassWiz"
Param="WIZARD_UI = FALSE"
Param="PROJECT_TYPE = CSPROJ"
*注意:VSZ文件格式定义见
VSZ文件描述
其中比较重要的是Param="WIZARD_NAME = CSharpAddSingletonClassWiz",这里“CSharpAddSingletonClassWiz”是指定了当创建Singleton类时使用的向导名称。
定制javascripts
打开目录<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards
新建一个名为CSharpAddSingletonClassWiz的目录,这个名称是和Param="WIZARD_NAME = CSharpAddSingletonClassWiz"中WIZARD_NAME对应的。
打开这个目录,创建目录Scripts,然后再在Scripts下创建目录1033。然后创建default.js文件。在其中放置如下代码:
function
OnFinish(selProj, selObj)
{
var
oldSuppressUIValue
=
true
;
try
{
var
strTarget
=
wizard.FindSymbol(
"
ITEM_NAME
"
);
var
strClassName
=
strTarget.split(
"
.
"
);
var
bValid
=
wizard.ValidateCLRIdentifier(strClassName[
0
]);
if
(
!
bValid)
{
wizard.ReportError();
return
VS_E_WIZARDBACKBUTTONPRESS;
}
oldSuppressUIValue
=
dte.SuppressUI;
var
strProjectName
=
wizard.FindSymbol(
"
PROJECT_NAME
"
);
var
strSafeProjectName
=
CreateSafeName(strProjectName);
wizard.AddSymbol(
"
SAFE_PROJECT_NAME
"
, strSafeProjectName);
SetTargetFullPath(selObj);
var
strProjectPath
=
wizard.FindSymbol(
"
TARGET_FULLPATH
"
);
var
strTemplatePath
=
wizard.FindSymbol(
"
TEMPLATES_PATH
"
);
var
strTpl
=
""
;
var
strName
=
""
;
var
InfFile
=
CreateInfFile();
AddReferencesForClass(selProj);
AddFilesToCSharpProject(selObj, strProjectName, strProjectPath, InfFile,
true
);
}
catch
(e)
{
if
( e.description.length
>
0
)
SetErrorInfo(e);
return
e.number;
}
finally
{
dte.SuppressUI
=
oldSuppressUIValue;
if
( InfFile )
InfFile.Delete();
}
}
function
SetFileProperties(oFileItem, strFileName)
{
}
*注意: 在这个JS文件中出现的方法调用可以在路径<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\2052下的common.js中找到,其中有比较清楚的注释说明。
创建文件模板
转到路径:<Program Files>\Microsoft Visual Studio .NET 2003\VC#\VC#Wizards\CSharpAddSingletonClassWiz,创建目录Templates,再在Templates目录下创建目录1033。目录创建完毕后添加文件Templates.inf,内容是:File1.cs(这个File1.cs是指我们所使用的文件模板名称)。随后创建文件File1.cs,根据前面给出Singleton模式示例的格式添加以下代码:
namespace
[
!
output SAFE_NAMESPACE_NAME]
{
using
System;
/**/
///
<summary>
///
[!output SAFE_CLASS_NAME].
///
</summary>
class
[
!
output SAFE_CLASS_NAME]
{
成员
#region
成员
private
static
[
!
output SAFE_CLASS_NAME] m_instance;
#endregion
构造函数
#region
构造函数
private
[
!
output SAFE_CLASS_NAME]()
{
//
//
TODO: 在此处添加构造函数逻辑
//
}
public
static
[
!
output SAFE_CLASS_NAME] GetInstance()
{
if
( m_instance
==
null
)
{
m_instance
=
new
[
!
output SAFE_CLASS_NAME]();
}
retrun m_instance;
}
#endregion
}
}
好了。通过以上的步骤就完成了一个项模板的定制。
当我们再打开一个项目,选择“添加新项”时,会发现在本地项目项中多了一个"Singleton类"的模板。如图:
同时在“本地项目项”的分支“代码”中也可以看到“Singleton类”模板。
当选定打开后并查看代码,可以发现所创建的类实现前面说描述的Singleton模式。
OK。至此,如何来自定义项模板就基本清楚了。进而通过这种方式,我们可以尝试自定义项模板的集合,例如可以把常用的一些模式实现作成项模板,这样无疑会对开发效率的提高有所帮助!
BTW:刚刚发现这篇
点缀
的
自定义VS.NET2003
有所重复,呵呵~
0
0
0
(请您对文章做出评价)
«
上一篇:
微软推出Microsoft Exchange Server Best Practices Analyzer Tool
»
下一篇:
RSS Reader\Workflow Lite\User Manager for Sharepoint以及一点想法
posted on 2005-01-28 16:11
~在思考中沉淀~
阅读(3039)
评论(4)
编辑
收藏
网摘
所属分类:
MS .Net相关
Feedback
397028
#1楼
2006-04-27 10:17
慕容剑秋[未注册用户]
楼主,好像对VS2003中文版本不适用啊。。
回复
引用
#2楼
2006-04-27 12:02
慕容剑秋[未注册用户]
搞定了。。谢谢
回复
引用
#3楼
2006-05-10 15:19
慕容剑秋[未注册用户]
问下,如果要做成安装包的话,该如何实现呢?
回复
引用
#4楼
2006-05-11 10:15
慕容剑秋[未注册用户]
所有的操作,我以手动方式成功了。但是类模板内如果需要引用到外部类的时候就不行了啊。。我的设想是像水晶报表一样的(点了水晶报表图标进行添加新项后,会自动在'引用'文件夹内加载水晶报表模板类所需要的dll)who能帮我啊。。
回复
引用
注册用户登录后才能发表评论,请
登录
或
注册
。
IT新闻
:
·
互联网周刊:邮箱的下一个拐点在哪里
·
雨林木风:“山寨 XP”的民族梦
·
评论人士列举谷歌新社交产品有望成功8大原因
·
Facebook在美非上市公司交易市场交易量居首
·
京东商城否认收购千寻网 称考虑收购合适对象
每天10分钟,轻松学英语
专题:
iPad
jQuery
Windows 7
网站导航:
博客园首页
IT新闻
个人主页
闪存
程序员招聘
社区
博问
网摘
China-pub 计算机图书网上专卖店!6.5万品种2-8折!
China-Pub 计算机绝版图书按需印刷服务
相关搜索:
MS .Net相关
在知识库中查看:
创建自定义的Visual Studio项模板
Powered by:
博客园
Copyright © ~在思考中沉淀~