在项目的属性页中,有一个新的VSIX标签页,让Visual Studio在调试扩展的时候,构建和/或部署VSIX的过程中创建VSIX文件。
图4.1 项目属性页中的VSIX标签页
在Visual Studio 2010之前,扩展是作为安装包部署的,这多少和单独的应用程序有些类似。 它们是在Visual Studio之外使用VSI或者MSI分别安装和维护的。 开发者经常会认为编写Visual Studio扩展很难,或者那不是一般开发者所能够完成的。那是对的。 此外,为Visual Studio扩展创建安装包更困难。
为了给Visual Studio 2008扩展创建安装包,MSDN上的一篇文章“教程: 简单的VSPackage部署”建议使用xcopy、安装项目,或者使用Windows Installer XML Toolset (WiX)。 在所有情况下,开发者都不得不学习MSI、WiX,或者理解注册表的键值以注册扩展。
使用安装项目的方法,开发者需要编写自定义的安装动作来注册扩展。 使用WiX既耗时又容易出错,因为那需要手动编辑XML文件,并且维护很多GUID值。 默认情况下,WiX安装只有最少的功能。 开发者需要操作更多的XML文件来提供功能,像定义安装文件夹以及显示许可信息等等。
在Visual Studio 2010中,对于开发扩展至少在两个方面做出了改进。 使用VSIX来对扩展打包更容易。 VSIX是在Visual Studio 2010中引入的针对扩展的部署单元。VSIX文件是一种使用了开放打包协议(Open Packaging Convention)的压缩文件。 我们可以从本地硬盘中像VSI和MSI的方式安装VSIX。 Visual Studio会识别出VSIX的文件扩展名,把它解压并把文件安装在正确的位置中。 它还可以通过Visual Studio Gallery进行发布和升级。 当你构建扩展项目的时候,Visual Studio 2010扩展项目模板就会生成VSIX文件。
在Visual Studio 2010中,开发者需要处理XML文件。 但是开发者不需要编辑原始的XML文件,Visual Studio 2010为其提供了编辑器。 那就是新的VSIX说明文件编辑器(图3)。 你所需要做的就是指定相同的VSIX ID——唯一的标识符,以及新的版本号。 然后把它上传到Gallery中,这样拥有旧版本的用户就可以下载更新。
VSIX本质上是一种简单的xcopy部署方式。 安装就是要对包进行复制和解压。 卸载只是删除文件夹。 它不支持高级的安装特性,像为GAC添加程序集或者创建桌面快捷方式等等。 它也不会在Visual Studio之外写入注册表。 它不支持自定义的动作。 MSDN上名为“Visual Studio 扩展部署”的文章对VSIX和MSI能做的和不能做的做了详细的说明。
VSIX主要是为了Visual Studio扩展部署而设计的,并且使用Visual Studio Gallery来发布。
构建项目
在构建了项目之后,构建的输出包括封装后的DLL、包定义文件(pkgdef)以及VSIX文件(图5)。
VSIX文件是包的部署文件,你可以把它发送给用户来进行安装,或者上传到Visual Studio Gallery中。
图5 构建输出
调试和运行扩展
在项目的属性页中,调试选项被设置为载入Visual Studio实验环境。(图6)
图6 项目的调试设定
按下F5,就会载入部署了VSIX的Visual Studio实验环境的新实例。 Visual Studio实验环境会与Visual Studio开发环境并行运行。 它是用于开发和测试Visual Studio包的沙盒环境。 部署在实验环境中的包不会影响你的主开发环境。 实验环境拥有自己的设定、注册表项和扩展。 我们可以使用开始菜单中的“重置微软Visual Studio 2010实验实例”选项,把它重置为干净的状态。