Visual Studio 扩展剖析

VSIX 包是一个 .vsix 文件,其中包含一个或多个 Visual Studio 扩展以及 Visual Studio 用于分类和安装扩展的元数据。 VSIX 包格式遵循开放打包约定 (OPC) 标准,这意味着它可以由任何可以打开 ZIP 文件的工具打开。

扩展项目是一个 C# 项目,其中包含一些使其独特的附加功能。 以下视频探讨了扩展项目,以更好地了解扩展项目的工作原理:

文件结构

使用 VSIX Project w/Command (Community) 模板创建新扩展时,文件结构如下所示:

VSIX 项目的文件结构。

.vsixmanifest 文件是主文件。 它是一个 XML 文件,其中包含有关 Visual Studio 使用的扩展的信息。 扩展的所有组件都在 .vsixmanifest 文件中注册。 它是 VSIX 项目中唯一必需的文件。

VSCommandTable.vsct 文件是声明命令的位置。 它是一个 XML 文件,包含按钮命令、菜单、键盘快捷方式绑定等的定义。 该文件将其内容编译为 output .dll 中的 blob,Visual Studio 使用该 blob 来构造其整个命令表菜单结构。 此文件仅声明命令表中的组件;而不处理任何命令调用。

*Package.cs 文件是 Package 类,这是大多数扩展的入口点。 在此处,通常会找到已注册的命令处理程序、工具窗口、选项页、服务和其他组件。

编译

项目编译为位于 /bin/debug/bin/release 文件夹中的 .vsix 文件,具体取决于当前的解决方案生成配置。 Visual Studio 扩展开发工作负载提供专用的 MSBuild 目标和任务来处理 VSIX 项目风格。

当 VSIX 项目生成时,它会自动自行部署到实验实例。 这可以在 VSIX 项目设置中进行控制:

VSIX 项目属性。

实验实例

为了保护 Visual Studio 开发环境免受可能更改它的未经测试的应用程序的影响,VS SDK 提供了可用于实验的实验空间。 可以像往常一样使用 Visual Studio 开发新的应用程序,但可以使用此实验实例来运行它们。

每个具有 VSIX 包的应用程序都会在调试模式下启动 Visual Studio 实验实例。

如果要在特定解决方案外部启动 Visual Studio 的实验实例,请在命令窗口中运行以下命令:

devenv.exe /RootSuffix Exp

有关更多扩展性概念,请查看有用的资源,这些资源将在学习本工具包时派上用场。