原文:SSMS2008插件开发(3)--部署调试SSMS2008插件

  上一次说到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方法的,将第一行的内容

       public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom){_applicationObject = (DTE2)application;

  改成

     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方法中的代码

           if(connectMode == ext_ConnectMode.ext_cm_UISetup)

  改成

           if (connectMode == ext_ConnectMode.ext_cm_Startup)

  现在运行程序,会发现SSMS2008的工具菜单中出现了我们定义的菜单,并且点击也会弹出“Hello World”。效果如下图:

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

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

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

SSMS2008插件开发(3)--部署调试SSMS2008插件相关推荐

  1. [转】:VS 2010 : 如何开发和部署Outlook 2010插件(Add-in)

    VS 2010 : 如何开发和部署Outlook 2010插件(Add-in) 转自: http://guofblog.blog.163.com/blog/static/168088614201062 ...

  2. iOS组件化系列之RubyMine如何调试Cocoapods插件

    前言 Cocoapods大家应该非常熟悉了,但是一般很少有人去看源码,那就更少人去写插件了,如果要全局掌控工程架构,那必须熟悉这些插件的使用,而且还有个问题,即使你写插件,但是网上根本找不到资料告诉你 ...

  3. vue 在浏览器控制台怎么调试 谷歌插件vue Devtools

    vue 在浏览器控制台怎么调试 谷歌插件vue Devtools 问题: vuejs里面的变量,怎么用浏览器的console查看? 例如,想在chrome里用console.log查看变量$data, ...

  4. IDEA远程部署调试Java应用程序

    IDEA远程部署调试Java应用程序 文章目录 IDEA远程部署调试Java应用程序 基本概述 准备工作 远程服务器准备 安装JDK 配置JAVA_HOME 项目准备 创建一个SpringBoot项目 ...

  5. 【 VS 插件开发 】三、Vs插件简单功能的实现

    [ VS 插件开发 ]三.Vs插件简单功能的实现 转载于:https://www.cnblogs.com/Wurq/p/6102426.html

  6. Y件DOOK: VSC 安装 谷歌浏览器调试 固件插件 Debugger for Chorme

    YDOOK: VSC 安装 谷歌浏览器调试固件插件 Debugger for Chorme 1. 打开 VDC 2. 在插件库中输入: chrome 3. 点击选择安装 第一个:Debugger fo ...

  7. Zookeeper安装部署调试命令

    Zookeeper安装部署调试命令 ZooKeeper 常用四字命令: 下载地址: http://www.apache.org/dyn/closer.cgi/zookeeper/ 我选用清华的镜像 h ...

  8. 如何在 Amazon EKS 中部署 SR-IOV 设备插件

    前言 随着云技术和容器的发展,越来越多的基于容器集群的通信负载开始在公有云上运行,通信负载对网络性能要求极高,因此广泛使用 SR-IOV 技术来提升网络的吞吐量和减少抖动,同时降低应用的 CPU 开销 ...

  9. 在 Microsoft Edge 浏览器上安装 Vue 项目调试扩展插件 Vue-Devtools

    在 Microsoft Edge 浏览器上安装 Vue 项目调试扩展插件 Vue-Devtools Vue-Devtools 插件是一个 Vue 项目的调试插件 Microsoft Edge 浏览器是 ...

最新文章

  1. keras中conv2d,conv2dTranspose的Padding详细介绍
  2. 联想一体计算机排行,2019最具性价比一体机推荐 电脑一体机十大最新排名
  3. ESX 3.5 与License Server不定时失去连接解决方法一例
  4. rand函数的使用方法php,PHP array_rand()函数 使用基础教程
  5. GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站
  6. react-redux模型图
  7. LeetCode 1051. 高度检查器
  8. 判断dll是版本(Debug Or Release)[测试通过]
  9. linux中的fbset工具,Fluxbox (简体中文)
  10. MySQL 5.7.21详细下载安装配置教程
  11. 设置Image控件加载图片完毕后的效果.
  12. fullcalendar 只保留周_用枝条扦插橡皮树太浪费,只需一个“叶片”,就能变成一棵橡皮树...
  13. 深入浅出 Python Iterators 迭代器
  14. 2020最新的黑马Java分享,包含课件,资料,项目,教程全部免费分享,需要的赶紧去收藏吧
  15. 安装ahci驱动sata
  16. GameFramework框架——UI底层框架梳理
  17. 如何解决Access denied for user ''@'localhost' (using password: NO)错误
  18. rebase详解——非常精髓
  19. context.lookup(java:comp/env/XXX)和直接context.lookup(XXX)的区别
  20. 关于餐厅选址,这10种店铺千万别选!

热门文章

  1. 用C语言编程实现矩形波信号,信号与系统综合设计性实验
  2. 我的世界java版幻翼_我的世界:熬夜3天能见到“幻翼”?你错了,还要满足这7个条件!...
  3. mysql设置约束l命令_mysql建表约束,sql
  4. 智能车竞赛技术报告 | 双车接力组 - 辽宁工业大学 - 灵越1队
  5. 第十六届全国大学生智能汽车竞赛总决赛 AI视觉组线上赛细则
  6. 信号与系统2021年期末考试命题
  7. 大咖云集!航天智慧物流创意组-技术培训第三期
  8. 解决git 提交出现这个错误fatal: Unable to create ‘project_path/.git/index.lock‘: File exists.
  9. 使用iso文件安装双系统linux,Win7下使用EasyBcd安装Ubuntu(iso文件)双系统
  10. css实现提示信息,单纯使用CSS实现动态提示信息