Visual studio 2017 如何在VS2017的C#中为SQL Server Management Studio 17创建扩展?

Visual studio 2017 如何在VS2017的C#中为SQL Server Management Studio 17创建扩展?,visual-studio-2017,ssms,vs-extensibility,ssms-2017,ssms-addin,Visual Studio 2017,Ssms,Vs Extensibility,Ssms 2017,Ssms Addin,我遵循Microsoft文档中的简单Hello World示例,为SSMS 2017构建了一个扩展 从扩展性项目模板创建VSIX项目 将项目>属性>调试中的“启动外部程序”更改为 C:\ProgramFiles(x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Ssms.exe 在命令行参数中添加-S(localdb)\MSSQLLocalDB-d sampleDB-E,作为 需要指定servername/database才能运行

我遵循Microsoft文档中的简单Hello World示例,为SSMS 2017构建了一个扩展

  • 从扩展性项目模板创建VSIX项目

  • 将项目>属性>调试中的“启动外部程序”更改为
    C:\ProgramFiles(x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\Ssms.exe

  • 在命令行参数中添加
    -S(localdb)\MSSQLLocalDB-d sampleDB-E
    ,作为
    需要指定servername/database才能运行SSMS.exe

  • 使用“添加新项”添加自定义命令
  • 运行项目
  • 如果没有执行步骤2和步骤3,它在Visual Studio中可以正常工作,但是在SSMS中不会发生任何事情,尽管它会启动SSMS


    为SSMS创建外接程序时是否遗漏了什么或有任何限制?

    首先,您需要在source.extension.vsixmanifest文件中声明SSMS支持:

      <Installation>
        <InstallationTarget Id="ssms" Version="[14.0, 14.0]" />
      </Installation>
    
    
    

    那么我认为VS不能自动为SSMS安装扩展。因此,请手动运行.vsix文件。

    第一位正确,但在设置之前还有几个步骤要做:

  • 您需要告诉Visual studio将扩展(在生成时)复制到 SSMS扩展文件夹,以便SSMS可以在启动时加载它 起来
  • 您需要告诉SSMS跳过其内部扩展验证 因为它不会加载任何没有白名单的扩展 SSMS团队
  • 我在CodeProject上创建的一篇文章中详细解释了这个过程。您可以在以下链接中找到完整的教程:

    您确定您的项目已使用正确的注册表项注册吗?例如,对于SSMS 14,它是
    HKCU\Software\Microsoft\SQL Server Management Studio\12xxx
    而不是
    HKCU\Software\Microsoft\VisualStudio
    我正在从VS本身进行调试,我应该在哪里查找注册表?您解决了这个问题吗?@PrzemysławNiedziela Nope,找不到当前版本的文档我已添加安装目标并运行vsix,但是,它仍然不工作。您需要在此处添加文章中的关键数据。否则,当链接腐烂时,这篇文章将变得毫无用处。@ivan_pozdeev,在辩护中,文章的大部分内容涵盖了OP在文章正文中的内容。这里的内联建议实际上涵盖了缺失的部分,因此这确实是为了直接解决没有外部资源的问题。@KyleMit可能,但当前的表述正好相反。@ivan_pozdeev,内联了这个问题中针对的主要步骤