有没有办法从.cs文件中获取函数列表?

Sam*_*abu 2 c# powershell powershell-2.0

我的经理让我获取项目中每个.cs文件中可用的函数列表.

但.cs文件的数量是巨大的.

手动查看很难.

有没有办法通过编写脚本或代码在.cs文件中找到函数名?

JTM*_*Mon 5

使用反射.如果所有文件都在项目中,那么您可以使用:

Type[] types = Assembly.GetExecutingAssembly().GetTypes();
foreach (Type toCheck in toProcess)
{
    MemberInfo[] memberInfos = toCheck.GetMembers(BindingFlags.NonPublic | BindingFlags.Public | OtherBindingFlagsYouMayNeed);
    //Loop over the membersInfos and do what you need to such as retrieving their names
    // and adding them to a file
}
Run Code Online (Sandbox Code Playgroud)

如果将项目编译为dll,则可以使用:

Assembly assembly = Assembly.LoadFrom(filePath); //filePath is for the dll
Type[] toProcess = assembly.GetTypes();
//rest of the code is same as above
Run Code Online (Sandbox Code Playgroud)

编辑:如果您希望找到每个物理文件的函数@BAF提及,您将获得程序集的基本目录(通过.CodeBase),然后执行目录树步骤查找所有.cs文件然后您将实现一个解析器,可以在每个文件中区分方法声明(可能还需要一个词法分析器以帮助解决它).两者都没有什么特别困难,但它们确实需要一些工作而且太复杂而不能作为答案包含在这里.至少这是最简单的答案,涵盖了我能想到的所有类型的方法声明,除非有人可以提出更简单的方法.