VSIX 包剖析

VSIX 包是包含 .vsix 一个或多个 Visual Studio 扩展的文件,以及 Visual Studio 用于分类和安装扩展的元数据。 该元数据包含在 VSIX 清单和 [Content_Types].xml 文件中。 VSIX 包还可能包含一个或多个 Extension.vsixlangpack 文件以提供本地化的设置文本,并且可能包含用于安装依赖项的其他 VSIX 包。

VSIX 包格式遵循开放打包约定(OPC)标准。 该包包含二进制文件和支持文件,以及 [Content_Types].xml 文件和 .vsix 清单文件。 一个 VSIX 包可能包含多个项目的输出,甚至包含具有其自己的清单的多个包。

注意

VSIX 包中包含的文件的名称不得包含空格,也不能包括在统一资源标识符(URI)中保留的字符,如 [RFC2396]定义。

VSIX 清单

VSIX 清单包含有关要安装的扩展的信息,并遵循 VSIX 架构。 有关详细信息,请参阅 VSIX 扩展架构 2.0 参考

当 VSIX 清单包含在.vsix文件中时,必须对其进行命名extension.vsixmanifest

内容

VSIX 包可能包含模板、工具箱项、VSPackage 或 Visual Studio 支持的任何其他扩展类型。

语言包

VSIX 包可能包含一个或多个 Extension.vsixlangpack 文件,用于在安装过程中提供本地化文本。 有关详细信息,请参阅 本地化 VSIX 包

依赖项和引用

VSIX 包可能包含其他 VSIX 包作为引用。 其他每个包都必须包含其自己的 VSIX 清单。

如果用户尝试安装具有依赖项的扩展,安装程序将验证是否在用户系统上安装了所需的程序集。 如果未找到所需的程序集,则扩展和汇报显示缺少的程序集的列表。

如果扩展清单包含一个或多个依赖项元素,则扩展和汇报将每个引用的清单与系统上安装的扩展进行比较,并安装引用的扩展(如果尚未安装)。 如果安装了引用的扩展的早期版本,则较新版本将替换它。

如果多项目解决方案中的项目包含对同一解决方案中另一个项目的引用,VSIX 包将包含该项目的依赖项。 可以通过选择内部项目的引用来替代此行为,然后在“属性”窗口中将 VSIX 属性中包含的输出组设置为 BuiltProjectOutputGroup

若要在 VSIX 包中包含引用程序集中的附属 DLL,请添加到 SatelliteDllsProjectOutputGroup VSIX 属性中包含的输出组。

安装位置

在安装期间,扩展和汇报在文件夹下%LocalAppData%\Microsoft\VisualStudio\{version}\Extensions查找 VSIX 包的内容。

默认情况下,安装仅适用于当前用户,因为 %LocalAppData% 是特定于用户的目录。 但是,如果将清单True的元素设置为AllUsers,该扩展将安装到该扩展的下方..\{VisualStudioInstallationFolder}\Common7\IDE\Extensions,并且将提供给计算机的所有用户。

[Content_Types].xml

[Content_Types].xml 文件标识扩展.vsix文件中的文件类型。 Visual Studio 在安装包期间使用此文件,但不安装文件本身。 有关此文件的详细信息,请参阅 [Content_types].xml 文件的结构。

开放打包约定(OPC)标准需要 [Content_Types].xml 文件。 有关 OPC 的详细信息,请参阅 OPC:打包数据的新标准。