外接程序注册

Visual Studio 2013 中已弃用 Visual Studio 外接程序。 你应该将外接程序升级到 VSPackage 扩展。 有关升级的详细信息,请参阅常见问题:将外接程序转换为 VSPackage 扩展

创建了外接程序后,必须先向 Visual Studio 注册此外接程序,然后才能在**“外接程序管理器”**中激活它。 使用具有 .addin 文件扩展名的 XML 文件来完成此操作。

.addin 文件描述了 Visual Studio 在**“外接程序管理器”中显示外接程序所需的信息。 在 Visual Studio 启动时,它会查找 .addin 文件位置,获取任何可用的 .addin 文件。 如果找到相应文件,则会读取 XML 文件并向“外接程序管理器”**提供在单击外接程序进行启动时所需的信息。

使用外接程序向导创建外接程序时,会自动创建一个 .addin 文件。 你也可以使用本主题中的信息手动创建 .addin 文件。

文件位置

外接程序向导会自动创建 .addin 文件的两个副本,如下所示:

.Addin 文件位置

.Dll 文件位置

描述

根项目文件夹

\Documents\Visual Studio 2013\Projects\MyAddin1\MyAddin1\

本地路径 (MyAddin1.dll)

用于部署外接程序项目。 包含在项目中以方便编辑,并使用本地路径安装以进行 xcopy 式部署。

外接程序文件夹

\Documents\Visual Studio 2013\Addins\

- 或 -

Shared Documents Location\Addins\

项目调试文件夹

(例如,\ Documents\Visual Studio 2013

Projects\MyAddin1\MyAddin1\bin\)

用于在调试环境中运行外接程序。 应该始终指向当前生成配置的输出路径。

若要将外接程序安装在另一台计算机上,必须将 .addin 文件放在 Visual Studio 将在其中检查外接程序的位置中。 这些位置列在**“外接程序的安全性”页面上的“环境”节点的“选项”**对话框中。 有关详细信息,请参阅外接程序安全性

包含外接程序的 .dll 文件可以安装在客户端计算机上的任意位置。 但是,我们建议你将该文件与 .addin 文件放在一起。

备注

.addin 文件的 <Assembly> 元素必须指向包含外接程序二进制文件的 .dll 文件。

.Addin 文件

.addin XML 文件拆分为下面的标记部分:

描述

主机应用程序

(必选。)指定可以加载外接程序的应用程序的名称和版本号。

外接程序

(必选)包含描述外接程序的元素。

“工具选项”页

(可选)在“选项”对话框中指定可在其中配置外接程序的页面。 子节点指定“选项”页面的类别和子类别,并且还指定其程序集名称和完整类名。

以下元素是 <Addin> 节的子级:

元素

描述

“关于”框的详细信息

(可选)指定将在 Visual Studio 的“关于”对话框中为外接程序显示的文本。

“关于”图标数据

(可选)包含二进制数据,可用来指定将在 Visual Studio 的“关于”对话框中为外接程序显示的图标。

“关于”图标位置

(可选)指定将在 Visual Studio 的“关于”对话框中为外接程序显示的图标的绝对路径或相对路径。

程序集

(必选。)指定外接程序的二进制形式的位置。 此字段可以设置为本地路径、网络路径或 URL。

命令行安全

(可选)指定外接程序兼容的 Visual Studio 模式,例如,仅支持命令行、仅支持集成开发环境 (IDE) 或同时支持两者。

命令预加载

(可选)指定外接程序的预加载状态;即外接程序是否应该使用一种方法(例如 Commands.AddNamedCommand)来创建自己的 UI。

完整类名

(必选。)指定用于连接到外接程序的类名。

加载行为

(可选)定义是在启动时加载外接程序还是手动加载外接程序。

下面是每种设置的详细信息。 有关所述的诸多元素的分层位置的详细信息,请参阅本主题后面的“示例 .Addin XML 文件”。

主机应用程序

Host Application 部分中的 <Name> 元素包含应用程序的名称。 这是在应用程序的标题栏中显示的名称或者由 DTE.Name 返回的名称。 例如,对于 Visual Studio,标记会包含“Microsoft Visual Studio”。

每个 .addin 文件可以有多个 Host Application 值。 每个值都必须在 <HostApplication> 元素内用 <Name> 标记括起来。 除了包含 <Name> 元素之外,每个 <HostApplication> 元素还必须包含由 <Version> 标记括起来的应用程序版本号。 例如,

   <HostApplication>
      <!-- First Host App name (required). -->
      <Name>Microsoft Visual Studio</Name>
      <Version>12.0</Version>
   </HostApplication>
   <HostApplication>
      <!-- An additional supported program/version. -->
      <Name>Microsoft Visual Studio</Name>
      <Version>11.0</Version>
   </HostApplication>

或者,你可以指定星号 (*),以表示任何版本的 Visual Studio 的 <Version> 值。

友好名称

位于 <Addin> 元素下的 <FriendlyName> 元素指定将在**“外接程序管理器”“可用外接程序”**列中显示的字符串。 例如,

   <FriendlyName>My New Super Addin</FriendlyName>

描述

位于 <Addin> 元素下的 <Description> 元素指定将在**“外接程序管理器”“说明”**框中显示的字符串。 例如,

   <Description>This add-in will change your life!</Description>

“关于”框的详细信息

创建外接程序时,如果选择了生成**“关于”对话框的设置的选项,则会将此元素添加到 .addin 文件中。 此元素指定将在 Visual Studio 的“关于”**对话框中显示的文本。 例如,

   <AboutBoxDetails>For add-in support, call 1-800-xxx-
     xxxx.</AboutBoxDetails>

“关于”图标数据

创建外接程序时,如果选择了生成**“关于”对话框的设置的选项,则会将此元素添加到 .addin 文件中。 此元素包含二进制数据,该数据指定将在 Visual Studio 的“关于”**对话框中显示的图标。 例如,

<AboutIconData>0000010006 . . . FFFF0000</AboutIconData>

程序集

位于 <Addin> 元素下的 <Assembly> 元素指定外接程序二进制文件的位置。 此元素可以设置为相对路径、绝对路径(“file”)、注册程序集名称(“assembly”)或 URL(“url”)。

  • 以下示例显示了绝对路径位置。 在这种情况下,src 参数将设置为 file,以指示外接程序 DLL 的位置。

    <Assembly src="file">C:\Documents and Settings\jdoe\Application Data\Microsoft\Visual Studio\12.0\AddIns\MyAddin4.dll</Assembly>
    
  • 以下示例显示了注册的位置。 在这种情况下,src 参数将设置为 assembly,以指示注册的外接程序 DLL。

    <Assembly src="assembly">BookshelfDefineAddin</Assembly>
    
  • 以下示例显示了 URL 位置。 在这种情况下,src 参数将设置为 url,以指示外接程序 DLL 的基于 Web 的位置。

    <Assembly src="url">http://somewebsite.com/MyAddin4.dll</Assembly>
    

完整类名

<FullClassName> 元素指定用于连接到外接程序的完整类名。 此名称包括其中包含类的命名空间。 例如,

    <FullClassName>MyAddin4.Connect</FullClassName>

加载行为

<LoadBehavior> 元素定义外接程序是在 IDE 启动时自动加载还是手动启动。 <LoadBehavior> 元素位于 <Addin> 元素下。 例如,

    <LoadBehavior>1</LoadBehavior>

尽管 <LoadBehavior> 的使用是可选的,但建议使用它来明确定义加载外接程序的时间。

描述

0

在 IDE 启动时不加载外接程序,而必须手动启动。

1

在 IDE 启动时自动加载外接程序。

4

在使用生成开关 (devenv /build) 从命令提示符处启动 devenv 时加载外接程序。

命令预加载

<CommandPreload> 元素指定是否必须预加载外接程序。 在安装 .addin 文件之后首次启动 Visual Studio 时,预加载将加载外接程序。 例如,

    <CommandPreload>1</CommandPreload>

此元素允许你指定在 Visual Studio 启动后必须加载外接程序。 它使外接程序有机会创建所需的 UI 元素(例如命令栏按钮)或者执行其他仅首次需要的初始化任务(例如创建默认的外接程序设置)。 随后将卸载外接程序,直至用户执行外接程序创建的其中一个命令为止。 之后,将根据需要加载外接程序。

描述

0

在用户通过使用“外接程序管理器”启动外接程序或者将外接程序设置为在启动时加载之前,外接程序将不会加载。

1

在安装 .addin 文件之后首次启动 Visual Studio 时,将会自动加载外接程序。

可以检查你实现的 OnConnection 方法,以查看通过使用第二个参数为 OnConnection 指定的连接类型是否为 ext_cm_UISetup。 如果是,则可以使用 AddNamedCommandAddControl 方法执行所需的任何命令安排。

命令行安全

可选的 <CommandLineSafe> 元素指示外接程序是否已设计为在从命令提示符处启动时(例如执行命令行生成或类似操作时)避免显示 UI。 (通过选择**“外接程序向导”中的“我的外接程序从不提供模式 UI”**可完成此操作。)此外,它还指定外接程序兼容的 Visual Studio 模式,例如,仅支持命令行或仅支持 IDE。 例如,

    <CommandLineSafe>0</CommandLineSafe>

描述

0

指定外接程序不是命令行安全的并且会显示 UI。

1

指定外接程序是命令行安全的并且不会显示 UI。

“工具选项”页

可选的 <ToolsOptionsPage> 元素指定**“选项”页,以便用户能够配置外接程序。 子节点指定“选项”**页显示时所采用的类别和子类别,并且还指定该页的程序集名称和完整类名。 以下示例显示了此元素的层次结构:

  <ToolsOptionsPage>
    <Category Name="Text Editor">
      <SubCategory Name="General">
        <Assembly>"MyFilePath\MyAddInOptionPage.dll"</Assembly>
        <FullClassName>"MyNamespace.MyAddInOptionPage"</FullClassName>
      </SubCategory>
    </Category>
  </ToolsOptionsPage>

示例 .Addin XML 文件

以下示例显示了一个完整的 .addin XML 文件。 它显示了本主题所述元素的层次结构和位置。

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Extensibility 
  xmlns="https://schemas.microsoft.com/AutomationExtensibility">
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>12.0</Version>
    </HostApplication> 
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>11.0</Version>
    </HostApplication>
    <Addin>
        <FriendlyName>My great new add-in.</FriendlyName>
        <Description>This add-in does it all.</Description>
        <AboutBoxDetails>Copyright 2013.</AboutBoxDetails>
        <AboutIconData>0000 . . . FFFF0000</AboutIconData>
        <Assembly>MyNewAddin.dll</Assembly>
        <FullClassName>MyNewAddin.Connect</FullClassName>
        <LoadBehavior>1</LoadBehavior>
        <CommandPreload>1</CommandPreload>
        <CommandLineSafe>0</CommandLineSafe>
    </Addin>
</Extensibility>

请参见

任务

如何:使用外接程序管理器控制外接程序

如何:创建外接程序

演练:创建向导

概念

自动化对象模型图表

其他资源

创建外接程序和向导

Visual Studio 命令和开关