【问题标题】:Getting DTE2 reference throws exception获取 DTE2 引用引发异常
【发布时间】:2017-05-04 18:53:04
【问题描述】:

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

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

这已经开始崩溃,可能是因为我将 VSIX 移植到 Visual Studio 2017。我得到一个神秘的对话框,上面写着“操作不可用”,或者有时“无效的类字符串(HRESULT 的异常:0x800401F3(CO_E_CLASSSTRING))”

发生了什么?

【问题讨论】:

    标签: vsix envdte


    【解决方案1】:

    正确的方法是

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

    更不用说 12.0 是针对 VS 2013 而不是针对 VS 2017。

    【讨论】:

    • 当你这样做的时候你在哪里? base 是什么?
    • 包内
    猜你喜欢
    • 2011-06-11
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2011-03-20
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多