摘要: 之前一部分时间,由于工作中需要,一度接触Visual Studio的模板这个主题,也是颇有一些心得,写这个系列出于要做一个PPT在小组内部做一个Share Session,所以有必要重新梳理一下对这个主题的认识,让它更加清晰和理论化。一,Visual Studio 模板分类Visual Studio 的模板有两种类型项目模板和项模板。项模板:是用户可以通过使用“添加新项”对话框添加到项目中的各个项。项模板根据包含的项的个数分为单文件项模板和多文件项模板。(项模板会在这个系列的最后介绍,其实相对于项目模板,更加简单)项目模板:是整个项目,用户可以使用“新建项目”对话框从项目模板来创建新项目。项目 阅读全文
posted @ 2011-12-15 15:47 WarrenHu 阅读(1270) 评论(0) 推荐(0) 编辑
摘要: 从“项目模板参数化(下)“开始到现在,我们应用IWizard接口的都是WebClient这个子项目,实际情况是,我们怎么对每个项目做定制,或者换个角度,我们这里有三个模板元数据文件,每个都可以定义和配置WizardExtension这个节点。一,用LifeCycleTracerIWizard跟踪多项目模板的多个子项目重新配置3个模板元数据文件的WizardExtension节点如下(先不配置ChainingLifeCycleTracerIWizard):<WizardExtension> <Assembly>Ethan.Woo.TemplateWizard, Versi 阅读全文
posted @ 2011-12-15 17:24 WarrenHu 阅读(568) 评论(0) 推荐(0) 编辑
摘要: 这篇文章,我们来研究一下IWizard这个接口。一,一个用来跟踪的接口实现LifeCycleTracerIWizard。因为IWizard接口是Visual Studio来管理实例化和执行方法的,也就是说它的类型实例的生命周期不是我们能够控制的,那么我们可以换一种思路来探讨这样的生命周期,所以我定义这样的一个IWizard实现LifeCycleTracerIWizard,用来跟踪接口里各个方法的执行循序,以及上下文信息,即参数值。LifeCycleTracerIWizard.cs的代码如下: 1: public class LifeCycleTracerIWizard : IWizard .. 阅读全文
posted @ 2011-12-15 17:21 WarrenHu 阅读(657) 评论(0) 推荐(0) 编辑
摘要: 本篇主要来介绍一下怎么利用IWizard接口提供的代码向导动态进行参数的设值。方式三:利用IWizard接口动态设值1,首先我们先看一下IWizard这个接口,这个接口第一在Microsoft.VisualStudio.TemplateWizardInterface.dll这个程序集中,命名空间为Microsoft.VisualStudio.TemplateWizard,签名如下: 1: public interface IWizard 2: { 3: void BeforeOpeningFile(ProjectItem projectItem); 4: voi... 阅读全文
posted @ 2011-12-15 16:18 WarrenHu 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 如果我们希望之前的那个项目模板更加实用,比如代码加个版权信息,包括创建时指定的项目名称,创建时间。该怎么办呢?实际上,Visual Studio的项目模板就有这样的一种机制,我个人把它定义为“参数化”机制。让我们先看一个图,很简单可以看到,我这里定义的“参数化”是指一个动态的过程,包括项目模板的准备阶段的“参数格式化”,和模板实例化时的附加动作“参数替换”。参数格式化:在准备阶段(即制作“项目模板源”),我们可以在任意的源文件中,附加一些参数占位符,占位符的格式是 $参数名称$ ,参数名称是大小写敏感的,Visual Studio自己的模板机制只认识这种格式的参数。参数替换:参数替换是参数化的 阅读全文
posted @ 2011-12-15 15:50 WarrenHu 阅读(357) 评论(0) 推荐(0) 编辑
摘要: 现在,我们来手工创建一个项目模板,并且研究一下部署和使用的问题。这里我们还是用上一篇初始准备的那个模板源。1,认识模板元数据文件。关于模板元数据文件的格式,MSDN有详细解释,请参照这两个链接:Visual Studio Template Metadata Files:http://msdn.microsoft.com/en-us/library/xsxc3ete.aspxVisual Studio Template Schema Reference :http://msdn.microsoft.com/en-us/library/xwkxbww4.aspx模板的Schema还是很复杂的,所以 阅读全文
posted @ 2011-12-15 15:49 WarrenHu 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 前文已经提及到我们这个系列主要先讨论项目模板的创建,创建项目模板有两种方法,向导创建,还有就是手工创建。现在让我们来创建一个简单的项目模板,通过这个简单的例子,一并了解一下两种创建方式的创建过程。这篇文章先看第一种创建方法,向导创建。1,模板的创建准备:模板本质上来自于一个模板源(这里我自己定义了一个概念,表示模板的准备的内容),所以我们要首先做出这样的一个源,假设公司现在有很多Web项目要做,很多项目组开发Web项目第一步,就是要创建项目的多层框架,这些层之间有较复杂的关系,每个层还会引用不同的程序集,如果有一个通用的模板,项目组搭框架不是很轻松?Web开发有很多模式和层次,这个不是此系列的 阅读全文
posted @ 2011-12-15 15:48 WarrenHu 阅读(706) 评论(0) 推荐(0) 编辑
摘要: 继续Visual Studio自定义模板(二),要想实现动态的自定义模板参数,还要回到vstemplate文件,在该文件中,我们可以配置自己的向导扩展WizardExtension, 通过WizardExtension,我们就可以在向导生成文件的过程中加入自定义的代码了。首先我们实现一个简单的自定义Wizard,namespace MyTemplate{ using System; using System.Collections.Generic; using Microsoft.VisualStudio.TemplateWizard; publicclass MyWi... 阅读全文
posted @ 2011-12-14 18:27 WarrenHu 阅读(364) 评论(0) 推荐(0) 编辑
摘要: 继续Visual Studio自定义模板(一)的自定义模板的话题,我们进行定义更完美的模板。首先我们来分析一个Visual Studio模板文件的构成。Visual Studio 2005导出的模板的位置是在“[我的文档]\Visual Studio 2005\My Exported Templates\”文件夹中,而对于项模板,要想应用到“添加新项”的对话框中,必须把模板copy到“[我的文档]\Visual Studio 2005\Templates\ItemTemplates”。我们可以看到一个模板文件就是一个zip文件,解压该文件,我们会看到三个文件,.ico, .cs, .vstem 阅读全文
posted @ 2011-12-14 18:25 WarrenHu 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 每个公司都有自己的编码标准,其中最基本的一条就是文件要有文件头,但是Visual Studio中默认的模板是没有任何文件头信息的,这就需要我们定义自己的模板。Visual Studio里的模板分为两类,项目模板和项模板,项目模板就是我们在添加项目是应用的模板,如Windows应用程序,类库等等,出现在“添加新项目”的对话框中,如下图, 我们在一个项目中添加新项时,比如添加一个类,一个接口,等等,这是应用的模板是项模板,出现在“添加新项”的对话框中,如下图, 这篇文章主要介绍如何自定义项模板。 在Visual Studio中定义自己的模板有一个非常快捷的方式,先新建一个文件,定义我们想... 阅读全文
posted @ 2011-12-14 18:23 WarrenHu 阅读(484) 评论(0) 推荐(0) 编辑