1

嗨,我不知道这是否可能,但我有 ac# Project 可以说A,我正在尝试一个ccess Assembly Info of another project B,以便我可以Method Info使用. 问题是我想不出一种方法来整合这两者。项目 A 提供一个并选择文件。读取它并提取项目 B 中正在使用的文件。project 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之类的东西将代码解析到其语法树中,然后以这种方式找到方法。


您可以只使用“项目 B”中构建的程序集(.exe 或 .dll)而不是其 .csproj 文件吗?加载程序集的反射信息会容易得多,只需遍历每个类和每个方法......

于 2012-04-25T16:38:32.577 回答
0

用于Assembly.LoadFile直接加载已编译的程序集——即 DLL 或 EXE;这将为您提供一个Assembly对象,您可以在其上调用GetTypes()等以访问您想要的所有信息。

于 2012-04-25T16:37:43.327 回答