【问题标题】:How to access a Visual Studio DTE Addin assembly如何访问 Visual Studio DTE 插件程序集
【发布时间】:2015-09-13 11:40:27
【问题描述】:

这是我想要做的:

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

这是我的代码,大致来自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。有什么想法吗?

【问题讨论】:

    标签: c# visual-studio-2010 reflection envdte


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-04-25
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 2011-12-25
      • 1970-01-01
      相关资源
      最近更新 更多