2014-01-14 1 views
1

내 개체 브라우저에서 참조 된 라이브러리의 모든 메서드를 볼 수 있습니다. 이러한 모든 메서드를 텍스트 파일로 내보내려고합니다. object browser어셈블리의 모든 메서드 이름을 내보내려면 어떻게해야합니까?

또한 dotPeek에 액세스 할 수 있지만 소프트웨어에서 내보내기 기능을 찾을 수 없습니다.

+0

이 SO 질문에서 존 소총의 대답은 당신을 도울 것입니다 : http://stackoverflow.com/questions/18905236/how-to-figure-out-all-with-custom-attribute- –

+0

@ SonerGönül VS 2012 기능 관점에서 묻는 질문이기 때문에 이것이 진정한 복제인지 확실하지 않습니다. – abhi

답변

2

나는 당신이 Visual Studio에서 그것을 할 수있는 방법을 모르겠어요 인정 있어요,하지만 프로그래밍 방식으로 당신은 반사를 사용할 수 있습니다

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

: 나는 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# 태그를 읽으십시오.하지만 어쩌면 누락 된 것이 있습니다 ... –