.net 有没有办法搜索cs文件

.net 有没有办法搜索cs文件,.net,reflection,c#-3.0,reflection.emit,system.reflection,.net,Reflection,C# 3.0,Reflection.emit,System.reflection,我需要列出cs文件中的方法,并在方法中列出每个方法调用。 例如:我有一节课 public void method1 () { c2.M2(); } public void method2 () { c2.m3(); } 这里c2是另一个类,m2 m3是该类的方法。在这里,我需要准备一个列表c2.m2()和c2.m3(),我有一百个或更多的cs文件来列出这些细节 有没有什么方法可以有效地浏览cs文件并进行搜索,而不是加载它们和处理文件流读取器?两种不同的方法可以获取您想要的内容

我需要列出cs文件中的方法,并在方法中列出每个方法调用。 例如:我有一节课

public void method1 ()
{
    c2.M2();
}

public void method2 ()
{
    c2.m3();
}
这里c2是另一个类,m2 m3是该类的方法。在这里,我需要准备一个列表c2.m2()和c2.m3(),我有一百个或更多的cs文件来列出这些细节


有没有什么方法可以有效地浏览cs文件并进行搜索,而不是加载它们和处理文件流读取器?

两种不同的方法可以获取您想要的内容:

  • 查看已编译的程序集(如反射和/或ILDasm),并允许您检查方法体中的IL指令
  • 查看.cs源文件并给出一个解析树

任何一个都应该让您列出每个方法内部的调用。

检查System.Reflection命名空间。@PieterGeerkens,可能是我没有正确地构建我的问题,通过反射,我们可以列出类中的方法,但不能列出方法体内容,我试图列出方法中的方法调用有人能回答这个问题吗?嗨,使用Mono.Cecil,它是许可版本,必须购买,即使我尝试了示例代码,我也能提取方法的c#格式,但不能提取方法中的方法调用列表,如果我必须提取一个方法代码,我可以使用这个,但不幸的是,我有cs文件需要列出方法调用。如果您有一个使用Cecil在方法中列出方法的示例代码,那将非常有帮助。我不知道您是从哪里想到需要购买Mono.Cecil的——它是开源的(他们的网站似乎没有提到许可证,但您可以在源文件中看到它;它是开源的)。至于如何使用Cecil,请尝试从和开始。抱歉,我误解了Reflector和Mono.Cecil之间的工具,谢谢你的回复,我已经看过了代码,但是没有发现对我的需求有用的东西。我需要列出类中方法内部调用的方法,但是通过这个Mono.cecil,我可以提取指令。请提供一些帮助。我能得到Nunit框架的帮助吗?。Cecil FAQ告诉你两种不同的方法来获取方法体中的指令。从这里开始,应该查找
call
callvirt
说明(以及可能的
newobj
或其他一些说明,具体取决于您的要求)。您尝试了什么,遇到了哪些具体问题?我只尝试了Cecil常见问题解答,但说明的格式是操作码,值是整数,这非常令人困惑。如何获得c#格式的指令或您提到的call和callvirt指令必须分开,如何做到这一点。一个简单的例子可以帮助我。