C# アセンブリを解析してすべてのメソッドを抽出する方法
-
25-09-2019 - |
質問
私のアプリケーションでは、アセンブリを解析してすべてのメソッドを抽出し、メソッドの名前とソース コードをオブジェクト (コードで定義したもの) の 1 つに保存したいと考えています。
それをどこから実装すればよいでしょうか?
編集:回答とコメントから、アセンブリからソースコードを取得するのはそれほど簡単ではないことがわかりました。では、現在のソリューション (Visual Studio) にないソース コード ファイルからソース コードを取得したい場合は、どこから始めればよいでしょうか?
解決
アセンブリは、ののソースコードが含まれていません。あなたはILを抽出することができるかもしれませんが、特に有用ではありませんリフレクターやILDASMなどのツールなしています。
のメソッド名の、のようなだけで何かを得るためには、
var assembly = Assembly.GetExecutingAssembly();
var names = (from type in assembly.GetTypes()
from method in type.GetMethods(
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.Static)
select type.FullName + ":" + method.Name).Distinct().ToList();
他のヒント
このデバッグ情報を取得するには、 共通のコンパイラ インフラストラクチャ:メタデータAPI プロジェクト。
これにより、 .pdb
ファイル (ソース ファイルや行番号などのデバッグ情報を含むファイル)。
私は、ソースコードを取得する方法がわからないんだけど、あなたが方法についての情報を取得しようとしている場合は、リフレクションを使用する必要があります。
MethodInfo[] methodInfos = typeof(MyClass).GetMethods(BindingFlags.Public |
BindingFlags.Static);
所属していません StackOverflow