我正在开发一个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正常运行,工具菜单中的项目显示(附图片)
但问题是Visual Studio上没有出现断点。
我在项目属性的Debug部分的“Start external program”中选择了SSMS作为启动程序。默认情况下,它具有VS15安装文件夹中的devenv.exe。现在,我认为这里的问题是只有在选择devenv.exe作为外部程序时调试才可用。我对吗?如果是这样,有没有办法启用调试?
答案 0 :(得分:0)
我设法解决了这个问题。首先,我需要关闭PInvokeStackImbalance
- CTRL + ALT + E
- 在“托管调试助理”下,取消选中PInvokeStackImbalance。
醇>
然后只需在SSMS安装文件夹内的Extensions文件夹中重建并复制新的dll