在本文中,你将会看到使用包扩展Visual Studio环境是多么容易。构建一个包是很简单的,但是要精通之却很难。很明显,这是因为,微软已经为你实现了所有结构化框架部分,其它的将由你来编写功能各异的代码。
开始前,你需要安装如下软件:
·Visual Studio 2005
·Visual Studio Industry Partners(VSIP) SDK
一、 用三步法构建一个包 下面是对创建一个包的大致概括:
1. 使用Visual Studio 2005创建一个新工程。在工程类型下,选择“Other Project Type ->Extensibility”,然后选择“Visual Studio Integration Package”。如果需要的话,你可以改变缺省设置,但是在此仅为了说明创建一个工作包的过程,所以我们全部使用缺省设置。
2. 点击OK启动“Visual Studio Integration Package”向导。
a. 在第一步中,选择Visual C#;
b. 在第二步中,你可以进行更改或使用缺省项;
c. 在第三步中,点选“Menu Command”;
d. 在第四步中,使用缺省项。
3. 最后,向导为你创建所有文件(描述如下)。但是,只是为了实际看一下包的话,你不需要做任何其它事情。只需在按F5键后,静观发生的情况即可。
图1.基本包消息 |
当新IDE启动时,你将看到一个新选项出现在Tools菜单下—“My Command Name”。选择它后,你会看到一个如图1所示的对话框。
到目前为止,你已经看到了一个可以工作的基本的包。尽管它目前所实现的仅是生成一个消息框,但是它向你展示了所有必需的结构化代码,接下来则由你创造性发挥了。后面将向你介绍包方案的不同部分;或者更准确地说,在哪里实现你的创造性编程。
二、 插件还是包? 在细致讨论一个包的不同部分之前,了解一下它与一个插件的区别可能很有好处。下列是一个简单的对照比较:
插件 |
包 |
高级(通常基于C#或VB.NET,还有C++) |
低级(基于COM对象,通常使用C++或C#经由互操作程序集) |
增强IDE UI,例如新命令、工具条、工具窗、按钮、事件响应、顶级菜单、上下文菜单 |
提供一个插件的所有特征,还有新工程类型,文档类型,编辑器,.NET语言,源代码控制集成,等等 可以使用可扩展性工程类型创建 需要VSIP SDK |
实现IDTExensibility2接口 |
实现IVSPackage接口 |
使用Visual Studio自动化对象模型定制现有IDE和自动化任务。 |
基于IDE本身所使用的低级COM对象和服务 |
一般地,你可以创建为IDE所识别的插件并且把它们加入到菜单中(通常是在Tools菜单下,除非你指定其它位置)。一旦激活这些插件,它们就可以与IDE中的其它不同的组件一起工作,例如编辑器格子或输出格子。
然而,包也可以创建新的IDE组件,例如一个专门构建用于与你的产品或语言一起工作的编辑器格子。借助于SDK中所包含的“Package Creation”向导,你可以用三种方式创建一个包:
· 文件菜单:作为顶级菜单“Tools”下的一个新菜单项
· 工具窗口:作为可以从菜单栏中激活的一个新工具窗口
· 定制编辑器:作为一个针对你自己的文件类型的全新的编辑器