Поскольку «стандартный» API для доступа к отладчику VS выглядит крайне ограниченным, я вручную добавил ссылку на Microsoft.VisualStudio.Debugger.Interop.Internal.dll при использовании nuget VS-SDK. , Это компилируется и запускается, когда я использую этот код:
IDebuggerInternal debugger = Package.GetGlobalService(typeof(SVsShellDebugger)) as IDebuggerInternal;
var session = debugger?.CurrentSession;
но когда я изменяю его на использование явного типа IDebugSession3
IDebuggerInternal debugger = Package.GetGlobalService(typeof(SVsShellDebugger)) as IDebuggerInternal;
Microsoft.VisualStudio.Debugger.Interop.IDebugSession3 session = debugger?.CurrentSession;
Я получаю сообщение об ошибке:
ошибка CS0433: тип «IDebugSession3» существует как в «Microsoft.VisualStudio.Debugger.Interop, версии = 8.0.1.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a», так и в «Microsoft.VisualStudio.Debugger.InteropA, версия = 9.0». .0.0, Культура = нейтральный, PublicKeyToken = b03f5f7f11d50a3a '
К сожалению, var не может использоваться во всех случаях для обхода ошибок компилятора, например, когда нужны перечисления.
Итак, мой вопрос: (Как) Можно ли использовать внутренний отладчик-Api вместе с Nuget VS-SDK?
Кстати: некоторое время назад у меня была похожая проблема с Microsoft.VisualStudio.Publish.dll и типом Microsoft.VisualStudio.Publish.Framework.PublishManager , который я не обнаружил продолжить расследование.