2016-09-20 6 views
0

Я разрабатываю визуальный студийный пакет, который будет иметь форму расширения для SSMS (SQL Server Management Studio). Я хочу открыть SSMS, когда я запускаю проект в режиме отладки. Когда я нажимаю запустить, SSMS открывается нормально, но как только я пытаюсь подключиться к базе данных Visual Studio создает этот Exeption:Не удается отладить визуальную студию, когда «Запустить внешнюю программу» - ssms.exe

Managed DEBUGGING Помощник «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

Я выбрал SSMS как программа запуска с «Старт внешней программы» в разделе Debug в свойствах проекта. По умолчанию у него есть файл devenv.exe из установочной папки VS15. Теперь я думаю, что проблема в том, что отладка доступна только в том случае, если в качестве внешней программы выбран devenv.exe. Я прав? Если да, есть ли способ включить отладку?

+1

http://stackoverflow.com/questions/3506796/pinvokestackimbalance-how-can-i-fix -this-or-turn-it-off – Techidiot

+0

Исключение исчезло, но я все еще не могу попасть в точки останова. Я хотел бы иметь возможность устанавливать точки останова и ударять их, поскольку я все еще разрабатываю программное обеспечение и без отладки это будет кошмар. @Techidiot –

+0

У меня нет опыта в этом, но я бы поспорил, что SSMS запускает свои плагины в отдельном процессе. Вы пытались добавить в свой код 'System.Diagnostics.Debugger.Launch()' и посмотреть, можете ли вы получить окно отладчика JIT, чтобы вы могли подключаться? –

ответ

0

Мне это удалось. Сначала мне нужно отключить PInvokeStackImbalance

  1. CTRL + ALT + E
  2. Под "Managed Debugging ассистенты" снимите PInvokeStackImbalance.

А потом просто восстановить и скопировать новые библиотеки DLL в папке Extensions внутри ВСС установки папки