簡體   English   中英

如何獲取 Visual Studio 解決方案的所有方法?

[英]How to get all methods of a Visual Studio Solution?

我需要為 CI/CD 記錄一個復雜的解決方案,其中一部分是為所有項目構建單元測試。 我的 VS 解決方案包含 17 個項目。

在此處輸入圖片說明

這些項目中的每一個都包含每個項目至少 10 個類,並且大多數類都充滿了復雜的方法,有些項目有超過100 個類 大多數項目都是控制台應用程序,但我們也有一個ASP MVC項目。

我知道我需要優先處理工作,但為了有效地完成它,我需要每個類都有一個完整的方法列表。

有誰知道任何適當的技術來做到這一點? 我知道反思可以奏效,但它會逐個班級進行,而且可能需要很長時間。

在每個項目屬性的構建部分中,啟用 XML 文檔文件。 構建所有項目,並從輸出文件夾中收集輸出 XML 文件。 這將為您提供所有類及其方法、參數名稱/類型等的列表。

在此處輸入圖片說明

前段時間我寫了一個簡單的控制台應用程序。 此代碼自動從您的 .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 中的所有類。 成員 - 所有方法。 我希望這對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM