选择 VSPackage 的安装目录
VSPackage 及其支持文件必须位于用户的文件系统上。 位置取决于 VSPackage 是托管还是非托管、并行版本控制方案和用户选择。
非托管 VSPackages
非托管 VSPackage 是可在任何位置安装的 COM 服务器。 其注册信息必须准确反映其位置。 安装程序用户界面(UI)应提供默认位置作为 Windows Installer 属性值的 ProgramFilesFolder
子目录。 例如:
<ProgramFilesFolder>\<MyCompany>\<MyVSPackageProduct>\V1.0\
应允许用户更改默认目录,以适应保持小型启动分区的用户,并倾向于在另一卷上安装应用程序和工具。
如果并行方案使用版本控制 VSPackage,则可以使用子目录来存储不同版本。 例如:
<ProgramFilesFolder>\<MyCompany>\<MyVSPackageProduct>\V1.0\2002\
<ProgramFilesFolder>\<MyCompany>\<MyVSPackageProduct>\V1.0\2003\
<ProgramFilesFolder>\<MyCompany>\<MyVSPackageProduct>\V1.0\2005\
托管的 VSPackage
还可以在任何位置安装托管 VSPackage。 但是,应考虑始终将它们安装到全局程序集缓存(GAC),以减少程序集加载时间。 由于托管 VSPackage 始终是强名称程序集,因此在 GAC 中安装它们意味着其强名称签名验证仅在安装时才会进行。 文件系统中其他地方安装的强命名程序集每次加载时都必须验证其签名。 在 GAC 中安装托管 VSPackages 时,请使用 regpkg 工具的 /assembly 开关写入指向程序集强名称的注册表项。
如果在 GAC 以外的位置安装托管 VSPackage,请按照针对非托管 VSPackage 提供的早期建议选择目录层次结构。 使用 regpkg 工具的 /codebase 开关编写指向 VSPackage 程序集路径的注册表项。
有关详细信息,请参阅 注册和注销 VSPackages。
附属 DLL
按照约定,包含特定区域设置资源的 VSPackage 附属 DLL 位于 VSPackage 目录的子目录中。 子目录对应于区域设置 ID (LCID) 值。
“管理 VSPackages”一文指示注册表项控制 Visual Studio 实际查找 VSPackage 的附属 DLL 的位置。 但是,Visual Studio 按以下顺序尝试在名为 LCID 值的子目录中加载附属 DLL:
默认 LCID(Visual Studio LCID;例如 \1033 for English)
具有默认子语言的默认 LCID。
系统默认 LCID。
具有默认子语言的系统默认 LCID。
美国英语(.\1033 或 .\0x409)。
如果 VSPackage DLL 包含资源和 SatelliteDll\DllName 注册表项指向它,Visual Studio 会尝试按上述顺序加载它们。