如何为SSMS 2019(v18)创建扩展

Kyl*_*Mit 5 sql-server ssms-addin visual-studio-extensions ssms-18

SQL Server Management Studio 18 RC1于2018年3月28日可用

SSMS 17已经被问到这个问题,但是为不同版本的SQL Server Management Studio编写扩展时,会有一些细微的变化。

如何使Hello World应用程序在SSMS 2019中运行?

Kyl*_*Mit 9

这是完整的步骤,改编自Stefan Timovski的有关如何创建SQL Server Management Studio 18(SSMS)扩展的文章

  1. 使用扩展工具包安装Visual Studio 2017

    如果不确定是否具有扩展工具包,则可以打开Visual Studio安装程序并修改当前安装以确保已安装扩展。

    Visual Studio安装程序
    Visual Studio扩展开发

  2. 创建新的扩展项目

    转到文件新项目(Ctrl+ Shift+ N

    文件>新建>项目

    选择“可扩展性”>“ VIX项目”

    可扩展性> VSIX项目

    如果没有这些选项,请确保已执行步骤1

  3. 添加新的命令项

    添加一个新项目(Ctrl+ Shift+ A

    新增项目

    选择可扩展性,仅出于演示目的,抓住一个自定义命令

    可扩展性>自定义命令

  4. 在Visual Studio中进行调试

    该命令文件将在“工具”>“调用Command1”中添加一个菜单项。如果您单击调试,Visual Studio将启动一个Debuggable实例,该实例已满载当前扩展。打还是打F5

    第一次启动可能需要一分钟的时间,但此后应该会更快

    启动调试

    单击事件在Command1 .cs>中处理Execute,您可以添加断点。

    调试器断点

    这是工作消息框

    打回来

  5. 获取SSMS的文件路径

    SSMS 18的默认安装路径应为:

    C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe
    
    Run Code Online (Sandbox Code Playgroud)

    如果不存在,要确定任何应用程序的启动位置,您可以Shift+右键单击该应用程序图标,然后选择“打开文件位置”

    SSMS位置

  6. 将启动设置为SSMS

    在VS(Alt+ Enter)中打开项目属性

    项目属性

    转到调试 > 启动外部程序,然后粘贴路径

    调试>启动外部程序

    删除命令行参数,因为它们不再适用于SSMS

  7. 将Deploy VSIX设置为SSMS

    “扩展名”子目录应与SSMS位于同一目录中。另外,使用您的项目名称添加一个额外的文件夹,如下所示

    C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Extensions\VSIXProject1
    
    Run Code Online (Sandbox Code Playgroud)

    转到VSIX >,然后选择“ 将VSIX内容复制到以下位置

    VSIX复制

  8. 设置权限

    最后,为了以编程方式调用C Drive上的任何应用程序,您需要管理员权限,因此需要在管理员模式下打开Visual Studio。您可以通过右键单击这样的应用程序来做到这一点

    以管理员身份运行

  9. 点击运行并调试

    快点!布拉莫!您的扩展程序现在应该正在运行SSMS

    SSMS调试器

进一步阅读

从历史上看,每个扩展都需要列入白名单,但是根据SSMS 18发行说明,一项重大更改(更好)是

开发SSMS扩展不再需要程序包ID
过去,SSMS仅选择性地加载众所周知的程序包,因此要求开发人员注册自己的程序包。这已不再是这种情况。

由于SSMS 18使用Visual Studio 2017孤立Shell,因此许多扩展开发人员文档在Visual Studio扩展文档下提供

  • Fwiw,[CodeProject 文章](https://www.codeproject.com/Articles/1377559/How-to-Create-SQL-Server-Management-Studio-18-SSMS) 的作者[他自己的 SSMS 扩展GitHub](https://github.com/Timovski/CSVPaste)以防“现实世界”示例对后续步骤有用。例如,他[将文本粘贴到此处的活动窗口中](https://github.com/Timovski/CSVPaste/blob/master/CSVPaste/PasteCommand/PasteCommand.cs#L95)。YMMV。 (4认同)
  • 很棒的工作@KyleMit - 我想补充一点,如果您给自己修改“C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Extensions”文件夹的权限,则不需要以管理员身份运行 (3认同)
  • 好答案,非常感谢!我将添加如果您要在VS 2019中构建扩展并针对SSMS 18,请使用Nuget软件包管理器卸载Microsoft.VisualStudio.SDK 16而安装15.x. 否则,您会在ActivityLog.xml中收到有关无法找到Microsoft.VisualStudio.Shell.15.0版本= 16.0.0.0的错误。 (2认同)
  • 有人知道或有关于如何在 SSMS V18 /19 的对象资源管理器上实现项目菜单的示例吗?我找了很长时间,只找到了以前版本的SSMS (2认同)
  • @osynavets - 你应该问一个新问题。不要在此处的评论中询问。首先,完全不清楚您的问题是什么,其次在评论中提出问题无助于建立有关该主题的有用资源知识库 (2认同)