2016-08-12 6 views
1

Visual Studioで.exeファイルを生成しました。逆の方法で、クラス情報(名前空間とクラス名)とメソッド情報(アクセス修飾子、戻り値の型、および入力パラメータ)を.exeファイルから取得する必要があります。C#でリフレクションを使用して実行可能ファイル(.exe)からクラスとメソッドの情報を抽出する方法

実際、私はこれらの情報をdllファイルから得ることができましたが、実行可能ファイルからは考えられませんでした。

誰でも私に簡単なコードデモを教えてもらえますか?前もって感謝します!!

答えて

0

ILSPYソフトウェアをダウンロードしてください。

step 1 => Unzip the Folder. 
step 2 => now you should be able to seen ilspy application open that file. 
step 3 => after open ilspy application you should go into => FILE Menu => Open. 
step 4 => Browse your .exe file and open you should be able to seen whole code. 

Thank you. 
+0

は、私は本当にこの問題を処理するために、反射コードを使用したい、アドバイスをいただき、ありがとうございます。 – funkyxym

1

実は私はdllファイルからこれらの情報が、実行可能ファイルからノーアイデアを得ることができました。

dllファイルとexeファイルに違いはありません。両方とも.NETアセンブリです。 DLLと同じコード/アプローチを使用してください。あなたがEXEやDLLファイルからAssemblyをロードするためにAssembly.LoadFileを使用する必要が

var assembly = Assembly.LoadFile("C:\path_to_your_exe\YourExe.exe"); 

foreach (var type in assembly.GetTypes()) 
{ 
    Console.WriteLine($"Class {type.Name}:"); 
    Console.WriteLine($" Namespace: {type.Namespace}"); 
    Console.WriteLine($" Full name: {type.FullName}"); 

    Console.WriteLine($" Methods:"); 
    foreach (var methodInfo in type.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) 
    { 
     Console.WriteLine($" Method {methodInfo.Name}"); 

     if (methodInfo.IsPublic) 
      Console.WriteLine($"  Public"); 

     if (methodInfo.IsFamily) 
      Console.WriteLine($"  Protected"); 

     if (methodInfo.IsAssembly) 
      Console.WriteLine($"  Internal"); 

     if (methodInfo.IsPrivate) 
      Console.WriteLine($"  Private"); 

     Console.WriteLine($"  ReturnType {methodInfo.ReturnType}"); 
     Console.WriteLine($"  Arguments {string.Join(", ", methodInfo.GetParameters().Select(x => x.ParameterType))}"); 
    } 
} 
+0

ちょっとYeldar、あなたの助言をありがとうございます。実際には、同じフォルダ内のdllファイル間に依存関係がある可能性があるので、LoadFileの代わりにLoadFromを使用することをお勧めしますが、.exeファイルが不明です。私は明日それを試してみるだろう。再度、感謝します!! – funkyxym

関連する問題