外接程序项目的组件

外接程序项目是通过使用**“外接程序向导”**创建并被编译为 DLL 的类库项目。外接程序项目包含一个名为 Connect 的源代码文件,同时 Connect 还是类的名称。Connect 类实现一个名为 IDTExtensibility2 的接口,该接口在外接程序和 Visual Studio 集成开发环境 (IDE) 之间传递命令。

IDTExtensibility2 有五个方法,这些方法在实现时用作事件。

方法

说明

OnConnection

外接程序加载到 Visual Studio 中时调用此方法。

OnStartupComplete

Visual Studio 加载完成后调用此方法。

OnAddInsUpdate

从 Visual Studio 加载或卸载外接程序时调用此方法。

OnBeginShutdown

关闭 Visual Studio 时调用此方法。

OnDisconnection

从 Visual Studio 卸载外接程序时调用此方法。

如果在使用**“外接程序向导”**创建外接程序时选中了用户界面选项,则除了自动实现 IDTExtensibility2 接口外,还会自动实现 IDTCommandTarget 接口。如果选择在外接程序中创建或操纵命令栏,则还必须实现命名空间 Microsoft.VisualStudio.CommandBars。

OnConnection 方法

因为每次加载外接程序时都会调用 OnConnection 方法,所以该方法绝对是在外接程序项目中使用的最重要的方法。而且,它用于在外接程序中调用其他自动化代码。会为 OnConnection 方法传递以下四个参数:Application、ConnectMode、AddInInst 和 custom。Application 表示 Visual Studio IDE。该方法被强制转换为一个名为 _applicationObject 的 DTE2 对象。该对象表示核心自动化模型中的主对象,并提供对其所有类型和成员的访问。ConnectMode(其值包含在 Extensibility.extConnectMode 中)表示外接程序加载的方式(即,通过命令行、通过打开解决方案等方式)。AddInInst 表示外接程序本身。custom 参数是数组,在其中可以选择性地将数据传递到外接程序。

除了初始化这些变量之外,如果用**“外接程序向导”创建外接程序时选择了在“工具”**菜单上为此外接程序创建一个命令的选项,则 OnConnection 还包含创建该命令的代码。

其他外接程序方法

其他四个由**“外接程序向导”**就地放置的外接程序方法在默认情况下为空。若要处理与外接程序相关的事件,可以使用这些其他方法响应这些事件。例如,关闭外接程序时,可以将代码添加到 OnAddInsUpdate 方法以向另一个过程发送通知消息。关闭 Visual Studio IDE 时可以调用 OnBeginShutdown 执行清除任务。

创建外接程序并选中“是否为外接程序创建命令栏用户界面?”选项(用于在**“工具”菜单上为外接程序创建命令)时,将实现 IDTCommandTarget 接口。将两个附加的方法(QueryStatusExec)添加到外接程序项目以处理命令任务。这些方法包含少量的代码,帮助将此命令放置在“工具”菜单上并响应用户的单击操作。QueryStatus 向外接程序通知命令的可用性。用户单击“工具”**菜单上外接程序的命令时,将调用 Exec 方法,因此如果需要响应该事件,则此方法就是应添加代码的地方。

请参见

概念

扩展性项目

其他资源

创建外接程序和向导