2015-09-13 58 views
1

這裏是我想要做的事:如何訪問一個Visual Studio DTE外接組件

  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。有任何想法嗎?

回答

1

除了實現插件接口(OnConnection等)所需的方法之外,任何第三方加載項都可能不公開任何方法。它的方法可以是內部的(不公開),甚至可以被混淆。

如果它是你的加載項,更好的方法是加載項提供命令來執行操作,並且給定你的外部DTE實例,你可以調用DTE.ExecuteCommand(「MyAddIn.MyCommand」)。

相關問題