質問

私のアプリケーションでは、アセンブリを解析してすべてのメソッドを抽出し、メソッドの名前とソース コードをオブジェクト (コードで定義したもの) の 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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top