2014-01-14 55 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#。但也许我错过了一些东西。只是问... –

相关问题