如何获取Visual Studio解的所有方法?

How to get all methods of a Visual Studio Solution?

我需要为 CI/CD 记录一个复杂的解决方案,其中一部分是为所有项目构建单元测试。我的 VS 解决方案包含 17 个项目。

每个项目至少包含 10 个 classes,并且大多数 classes 都充满了复杂的 methods,一些项目有超过 100 classes。大多数项目都是 console 应用程序,但我们也有一个 ASP MVC 项目。

我知道我需要确定工作的优先级,但为了有效地完成这项工作,我需要每个 class.

的完整方法列表

有谁知道这样做的正确方法吗?我知道反射可以工作,但它会被 class class 并且可能也需要很长时间。

在每个项目属性的构建部分中,启用 XML 文档文件。构建所有项目,并从输出文件夹中收集输出 XML 文件。这将为您提供所有 类 及其方法、参数 names/types 等的列表

前段时间我写了一个简单的控制台应用程序。 此代码自动从您的 .sln 中获取所有方法:

    static void Main(string[] args)
    {
        var rootPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.Parent.FullName;
        var dlls = Directory.GetFiles(rootPath, "*.dll", SearchOption.AllDirectories).Where(row => row.Contains("\bin\")).Distinct();

        foreach (var dll in dlls)
        {
            var assembly = Assembly.LoadFrom(dll);
            var types = assembly.GetTypes();
            foreach (var type in types)
            {
                var members = type.GetMethods(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Static);
                foreach (MemberInfo member in members)
                {
                    Console.WriteLine($"{assembly.GetName().Name}.{type.Name}.{member.Name}");
                }

                var members2 = type.GetMethods(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly | BindingFlags.Static);
                foreach (MemberInfo member in members2)
                {
                    Console.WriteLine($"{assembly.GetName().Name}.{type.Name}.{member.Name}");
                }
            }
        }
    }

dlls - 您的解决方案中的所有 dll 文件。 类型 - dll 中的所有 class。 成员 - 所有方法。 希望对你有帮助。