如何访问 Visual Studio DTE 插件程序集

How to access a Visual Studio DTE Addin assembly

这是我正在尝试做的事情:

  1. 创建加载 Visual Studio DTE
  2. 的可执行文件
  3. 加载的插件的访问方法

这是我的代码,大致遵循 this blog

[STAThread]
static void Main(string[] args)
{
    EnvDTE80.DTE2 dte;
    object obj = null;
    System.Type t = null;

    MessageFilter.Register();
    // Get the ProgID for DTE 10.0.
    t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
    obj = System.Activator.CreateInstance(t, true);

    var addin = GetAddInByProgID(dte, "MyAddin");
    if (addin != null)
    {
        addin.Connected = true;
        var connectObj = addin.Object;
        var conObjType = connectObj.GetType();
        var methods = conObjType.GetMethods();  // mscorlib methods
        var asm = conObjType.Assembly;  //  is mscorlib
     }
     ...
}

我 运行 遇到的问题是我无法访问 Addin 的程序集。 conObjType 的程序集似乎是 mscorlib - 但我想访问 Myaddin.dll。有什么想法吗?

除了实现插件接口(OnConnection 等)所需的方法外,任何第 3 方插件都不能公开任何方法。它的方法可以是内部的(不是public)甚至可以被混淆。

如果它是您的加载项,更好的方法是加载项提供执行操作的命令,并且给定您的外部 DTE 实例,您可以调用 DTE.ExecuteCommand("MyAddIn.MyCommand" ).