加载项目的程序集


嗨,我不知道

这是否可能,但我有一个 c# 项目,让我们说A,我正在尝试ccess Assembly Info of another project B,以便我可以Method Info project B使用 Reflection .问题是我想不出将这两者结合起来的方法。项目 A 提供了一个openFileDialogue,它选择.csproj文件。读取它并提取项目 B 中使用的文件。

你能建议我锻炼一下吗?

我认为你不能通过使用反射来做到这一点。要使用反射,您需要一个程序集,而不是 csproj(或 cs 文件)。您应该寻找一个解析器,也许使用 Roslyn API,它将以语法树格式为您提供有关源代码的信息。http://blogs.msdn.com/b/visualstudio/archive/2011/10/19/introducing-the-microsoft-roslyn-ctp.aspx

每个.csproj文件都是XML,所以你可以很容易地阅读它。该文件中列出了项目中包含的每个文件,因此您可以分析 XML .csproj 文件以查找所有.cs文件。

从那里,如果您需要提取 MethodInfo,则必须解析.cs文件,或者使用 Roslyn 之类的东西将代码解析到其语法树中,并以这种方式找到方法。


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

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

相关内容

  • 没有找到相关文章

最新更新