1

こんにちは、これが可能かどうかはわかりませんが、ac# Project があり、 を使用できるようAにしようとしています。問題は、これら2つを統合する方法が思いつかないことです。プロジェクト A は を提供し、ファイルを選択します。それを読み取り、プロジェクト B で使用されているファイルを抽出します。ccess Assembly Info of another project BMethod Infoproject BReflectionopenFileDialogue.csproj

ワークアウトを提案してもらえますか?

4

3 に答える 3

3

リフレクションを使用してそれを行うことはできないと思います。リフレクションを使用するには、csproj (または cs ファイル) ではなく、アセンブリが必要です。おそらく Roslyn API を使用して、ソース コードに関する情報を構文ツリー形式で提供するパーサーを探す必要があります。 http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx

于 2012-04-25T16:44:32.323 に答える
1

各 .csproj ファイルは XML であるため、非常に簡単に読み取ることができます。このファイルには、プロジェクトに含まれるすべてのファイルがリストされているため、XML .cs​​proj ファイルを解析してすべての .cs ファイルを見つけることができます。

そこから MethodInfo を抽出する必要がある場合は、.cs ファイルを解析するか、Roslynなどを使用してコードを構文ツリーに解析し、その方法でメソッドを見つける必要があります。


.csproj ファイルの代わりに、「プロジェクト B」からビルドされたアセンブリ (.exe または .dll) を使用できますか? アセンブリのリフレクション情報をロードし、すべてのクラスとすべてのメソッドをループする方がはるかに簡単です...

于 2012-04-25T16:38:32.577 に答える
0

Assembly.LoadFileコンパイルされたアセンブリ (つまり、DLL または EXE) を直接ロードするために使用します。これにより、必要なすべての情報にアクセスするためにAssembly呼び出すことができるオブジェクトが得られます。GetTypes()

于 2012-04-25T16:37:43.327 に答える