SSMS2008插件开发(3)--部署调试SSMS2008插件 .

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介:   上一次说到VS2008中的插件开发,最终结果插件是部署在VS2008中,现在我们将插件部署到SSMS2008(Microsoft Sql Server Management Studio 2008)中。

  上一次说到VS2008中的插件开发,最终结果插件是部署在VS2008中,现在我们将插件部署到SSMS2008(Microsoft Sql Server Management Studio 2008)中。可以参考一下这里

  打开上一次的项目MySSMSAddin,右“解决方案资源管理器”中右击该项目,选择“属性”,进入该项目的属性设置界面。在“应用程序”选项卡中,将“程序集名称”改为“MySSMSAddin”,这不是必须的,但我习惯程序集名称与项目名称相同。

  在“生成”选项卡中,选中“为COM互操作注册”。这样才可以向注册表中注册我们写的DLL文件。另外一个方法是增加一个安装项目,由安装项目来注册。

  在“调试”选项卡中,将“启动外部程序”那项的内容改为SSMS可执行文件,该文件在SQL2008的安装目录中的100\Tools\Binn\VSShell\Common7\IDE中的Ssms.exe,要包含路径,我的机器是“C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe”。将“命令行参数”中的内容清空。将“工作目录”设置为SSMS.EXE所在目录,我的机器是“C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\”。

  添加一些操作SSMS需要用的类库(DLL文件),SQL安装目录(C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE)中的SqlWorkbench.Interfaces.dll和Microsoft.SqlServer.SqlTools.VSIntegration.dll。

  在注册表中增加如下图内容,SSMS所有的插件都需要在Addins中注册(如果没有Addins请自行添加),其中MySSMSAddin.Connect是插件的全名称,前面表示命名空间,后面表示类名。LoadBehavior为双字节值(DWORD)。下图中的内容也可以添加在HKEY_CURRENT_USER中,不过这样的话插件就只能由当前用户使用,对其他用户不可见。


  此时如果打开SSMS2008,会发现报错,因为我们的DLL并没有进行注册,要注册很简单,编译一下我们的项目(MySSMSAddin)就可以,但是编译后再打开SSMS2008仍然会报错,这是因为获取SSMS2008的APPLICATION(DTE)对象和VS2008中的不一样。

  打开Connect.cs,找到OnConnection方法的,将第一行的内容

[csharp] view plain copy print ?
  1. public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)  
  2. {  
  3.     _applicationObject = (DTE2)application;  
		public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
		{
			_applicationObject = (DTE2)application;

  改成


[csharp] view plain copy print ?
  1. public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)  
  2. {  
  3.                      _applicationObject = (DTE2)ServiceCache.ExtensibilityModel;  
		public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom)
		{
                       _applicationObject = (DTE2)ServiceCache.ExtensibilityModel;
  注意,需要引用命名空间using Microsoft.SqlServer.Management.UI.VSIntegration;


  此时,运行程序,发现VS2008自动运行SSMS2008,并且没有任何错误,但是工具菜单中并没有找到“Test Menu“这个菜单项。这是因为SSMS2008加载插件的时候,其状态并不是ext_ConnectMode.ext_cm_UISetup而是ext_ConnectMode.ext_cm_Startup(关于ext_ConnectMode枚举的说明请参考这里),将OnConnection方法中的代码


[csharp] view plain copy print ?
  1. if(connectMode == ext_ConnectMode.ext_cm_UISetup)  
           if(connectMode == ext_ConnectMode.ext_cm_UISetup)
  改成
[csharp] view plain copy print ?
  1. if (connectMode == ext_ConnectMode.ext_cm_Startup)  
           if (connectMode == ext_ConnectMode.ext_cm_Startup)
  现在运行程序,会发现SSMS2008的工具菜单中出现了我们定义的菜单,并且点击也会弹出“Hello World”。效果如下图:


  关于调试:要调试SSMS的插件,就和正常的代码一样,在需要的地方增加断点即可。

  下一次将会详细介绍SSMS2008中增加菜单、访问各种对象的方法。

  这次的相关DEMO项目在我的资源中


相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6月前
|
开发工具 Android开发 git
【dbeaver】Eclipse 运行 dbeaver 源码
【dbeaver】Eclipse 运行 dbeaver 源码
475 0
|
6月前
|
Java Android开发
【dbeaver】IDEA 运行 dbeaver源码
【dbeaver】IDEA 运行 dbeaver源码
682 1
|
6月前
|
SQL 关系型数据库 MySQL
使用图形化界面工具DataGrip
使用图形化界面工具DataGrip
|
Windows
Visual Studio 2019 界面开发额外开启控制台
界面开发时,开启控制台,用于打印调试输出
289 0
Visual Studio 2019 界面开发额外开启控制台
|
SQL 存储 Oracle
MySQL数据库界面化工具 - Navicat的常用功能
MySQL数据库界面化工具 - Navicat的常用功能
290 0
|
SQL Oracle 关系型数据库
DataGrip初体验
DataGrip总体来说是一款非常好的数据库管理软件,整体风格和Idea一样,智能代码补写非常好用。
1481 1
|
SQL NoSQL Oracle
正版数据库连接工具,DBeaver的安装与配置使用
正版数据库连接工具,DBeaver的安装与配置使用
正版数据库连接工具,DBeaver的安装与配置使用
|
数据可视化 NoSQL 关系型数据库
4-TDengine图形化管理工具TDengineGUI与IDEA插件
4-TDengine图形化管理工具TDengineGUI与IDEA插件
3085 0
4-TDengine图形化管理工具TDengineGUI与IDEA插件
|
搜索推荐 Java 数据库连接
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
339 0
eclipse的配置、快捷键、项目导入导出、常见的插件或代码生成器工具
下一篇
无影云桌面