2014-01-14 57 views
1

我能夠在對象瀏覽器中查看引用庫中的所有方法。我希望將所有這些方法導出到文本文件。 object browser如何導出程序集中所有方​​法的名稱?

我也可以訪問dotPeek,但我找不到該軟件中的任何導出功能。

+0

從這個SO問題喬恩斯基特的回答將幫助你:http://stackoverflow.com/questions/18905236/how-to-figure-out-dynamic-all-methods-with-custom-attribute –

+0

@SonerGönül我不知道這是否是一個真正的重複,因爲我從VS 2012功能的角度提出問題。 – abhi

回答

2

我得承認我不知道你怎麼能做到這一點在Visual Studio,但你編程可以使用反射:

System.IO.File.WriteAllLines(myFileName, 
       System.Reflection.Assembly.LoadFile(myDllPath) 
        .GetType(className) 
        .GetMethods() 
        .Select(m => m.Name) 
        .ToArray()); 

ETA:

我不是100%如果你想在截圖的方法或在DLL所以我與第二個變體更新了所有的方法:

System.IO.File.WriteAllLines(myFileName, 
       System.Reflection.Assembly.LoadFile(myDllPath) 
        .GetTypes()      
        .SelectMany(t => t.GetMethods()) 
        .Select(m => m.Name) 
        .ToArray()); 
+0

這是最接近我需要做的。我將修改此代碼以獲取類名稱。謝謝。 – abhi

+0

太棒了,很高興我能幫到你。如果你已經解決了這個問題,你能否將其中一個解決方案標記爲答案? – Liath

1

您可以使用PowerShell來獲取在給定的組合類型/方法的列表。

$AssemblyList = [System.AppDomain]::CurrentDomain.GetAssemblies(); 

foreach ($Type in $AssemblyList[5].GetTypes()) { 
    $MethodList = $Type.GetMethods(); 
    foreach ($Method in $MethodList) { 
     $Type.Name + ' ' + $Method.Name; 
    } 
} 

你也可以做一個特定的文件路徑上只反射負載:

$Assembly = [System.Reflection.Assembly]::ReflectionOnlyLoadFrom('c:\path\to\assembly.dll'); 

foreach ($Type in $Assembly.GetTypes()) { 
    $MethodList = $Type.GetMethods(); 
    foreach ($Method in $MethodList) { 
     $Type.Name + ' ' + $Method.Name; 
    } 
} 
+0

PowerShell如何與OP問題相關? –

+1

閱讀問題的標題:「我如何導出程序集中所有方​​法的名稱?」此外,OP的目標是:「我希望將所有這些方法導出到一個文本文件中 –

+0

嗯..閱讀標籤C#。但也許我錯過了一些東西。只是問... –

相關問題