当“启动外部程序”是ssms.exe时,无法从visual studio调试

时间:2016-09-20 13:00:50

标签: c# visual-studio visual-studio-2015 ssms

我正在开发一个visual studio包,它将采用SSMS(SQL Server Management Studio)扩展的形式。我想在调试模式下运行项目时打开SSMS。当我按下运行时,SSMS正常打开但是一旦我尝试连接到数据库,Visual Studio就会抛出这个例子:

  

托管调试助手'PInvokeStackImbalance'在'C:\ Program Files(x86)\ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Ssms.exe'中检测到问题。

     

附加信息:调用PInvoke函数'ObjectExplorer!Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.Service :: GetBrowserInfoInterop'使堆栈失衡。这很可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。

如果我点击“继续”,它会再次显示相同的异常,但最终会消失。 SSMS正常运行,工具菜单中的项目显示(附图片) SSMS print screen

但问题是Visual Studio上没有出现断点。

enter image description here

我在项目属性的Debug部分的“Start external program”中选择了SSMS作为启动程序。默认情况下,它具有VS15安装文件夹中的devenv.exe。现在,我认为这里的问题是只有在选择devenv.exe作为外部程序时调试才可用。我对吗?如果是这样,有没有办法启用调试?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。首先,我需要关闭PInvokeStackImbalance

  
      
  1. CTRL + ALT + E
  2.   
  3. 在“托管调试助理”下,取消选中PInvokeStackImbalance。
  4.   

然后只需在SSMS安装文件夹内的Extensions文件夹中重建并复制新的dll