外接程序注册

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

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

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

文件位置

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

.Addin 文件位置

.Dll 文件位置

说明

根项目文件夹

\Documents\Visual Studio 2010\Projects\MyAddin1\MyAddin1\

本地路径 (MyAddin1.dll)

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

外接程序文件夹

\Documents\Visual Studio 2010\Addins\

- 或 -

共享文档位置\Addins\

项目调试文件夹

(例如,\ Documents\Visual Studio 2010

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 文件”一节。

19dax6cz.collapse_all(zh-cn,VS.110).gif宿主应用程序

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

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

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

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

19dax6cz.collapse_all(zh-cn,VS.110).gif友好名称

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

   <FriendlyName>My New Super Addin</FriendlyName>

19dax6cz.collapse_all(zh-cn,VS.110).gif说明

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

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

19dax6cz.collapse_all(zh-cn,VS.110).gif“关于”框的详细信息

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

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

19dax6cz.collapse_all(zh-cn,VS.110).gif“关于”图标数据

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

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

19dax6cz.collapse_all(zh-cn,VS.110).gif程序集

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

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

    <Assembly src="file">C:\Documents and Settings\jdoe\Application Data\Microsoft\Visual Studio\10.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>
    

19dax6cz.collapse_all(zh-cn,VS.110).gif完整的类名称

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

    <FullClassName>MyAddin4.Connect</FullClassName>

19dax6cz.collapse_all(zh-cn,VS.110).gif加载行为

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

    <LoadBehavior>1</LoadBehavior>

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

说明

0

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

1

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

4

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

19dax6cz.collapse_all(zh-cn,VS.110).gif命令预加载

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

    <CommandPreload>1</CommandPreload>

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

说明

0

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

1

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

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

19dax6cz.collapse_all(zh-cn,VS.110).gif命令行安全

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

    <CommandLineSafe>0</CommandLineSafe>

说明

0

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

1

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

19dax6cz.collapse_all(zh-cn,VS.110).gif“工具选项”页

可选的 <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 Macros</Name>
        <Version>10.0</Version>
    </HostApplication> 
    <HostApplication>
        <Name>Microsoft Visual Studio</Name>
        <Version>10.0</Version>
    </HostApplication>
    <Addin>
        <FriendlyName>My great new add-in.</FriendlyName>
        <Description>This add-in does it all.</Description>
        <AboutBoxDetails>Copyright 2010.</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 命令和开关

概念

自动化对象模型图表

其他资源

创建外接程序和向导