对于我的应用程序,我想解析一个程序集并提取每个方法并将方法的名称和源代码存储在我的一个对象中(我在我的代码中定义)。
我应该从哪里开始实施呢?
编辑:从答案和评论中我看到从程序集中获取源代码并不容易。那么如果我想从当前解决方案(Visual Studio)中没有的源代码文件中获取源代码,我应该从哪里开始呢?
对于我的应用程序,我想解析一个程序集并提取每个方法并将方法的名称和源代码存储在我的一个对象中(我在我的代码中定义)。
我应该从哪里开始实施呢?
编辑:从答案和评论中我看到从程序集中获取源代码并不容易。那么如果我想从当前解决方案(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);