获取DTE2引用会引发异常

时间:2017-05-04 18:53:04

标签: vsix envdte

As instructed,我使用以下行在VSIX扩展中的菜单项回调中获取DTE2实例。

dte2 = (DTE2)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE.12.0");

这已经开始崩溃,也许是因为我将VSIX移植到Visual Studio 2017.我得到一个神秘的对话框,说“操作不可用”,或者有时“无效的类字符串(HRESULT的异常:0x800401F3(CO_E_CLASSSTRING))”< / p>

发生了什么事?

enter image description here

1 个答案:

答案 0 :(得分:3)

正确的方法是

EnvDTE80.DTE2 dte2 = base.GetService(typeof(EnvDTE.DTE))as EnvDTE80.DTE2;

更不用说12.0适用于VS 2013而不适用于VS 2017.