簡體   English   中英

如何從 .Net DLL 獲取公共導出列表?

[英]How can I get a list of public exports from a .Net DLL?

我可以使用“dumpbin”和“dll export”之類的工具來查看 Windows\SYSTEM32\GDI32.dll 等標准 win32 DLL 的公共入口點(“exports”)。 但是當我在 .Net DLL 上使用這些相同的工具時,我看到的只是

 2000 .reloc 2000 .rsrc 48000 .text

我有一個 C#/.Net DLL,它提供了控制工業過程的入口點,我想根據我們的文檔檢查它的公共入口點,以確保公共文檔的完整性。 什么工具顯示 .Net DLL 的公共入口點?

我嘗試過 Jetbrains DotPeek,它可以將我們的 DLL 完全反編譯為 C# 源代碼,但這太過分了,因為它顯示了所有內容,並且似乎沒有只報告公共入口點的摘要模式。

我假設“入口點”是指“公共類和方法”

使用 Visual Studio 對象瀏覽器怎么樣?

  1. 創建一個測試項目
  2. 添加對要檢查的 DLL 的引用。
  3. 雙擊引用打開對象瀏覽器
  4. 單擊“齒輪”小圖標並取消選中“顯示私人成員”、“顯示受保護成員”、“顯示其他成員”,這樣您就只能看到公共內容。
  5. 開始瀏覽。

僅作為起點,如何列出當前程序集中的所有公共類型並列出其中的所有公共方法:

Assembly assembly = Assembly.GetExecutingAssembly();
var exports = 
assembly.GetExportedTypes()
        .SelectMany(type => type.GetMethods(BindingFlags.Instance | BindingFlags.Public)
                                .Select(member => new
                                {
                                    type.FullName,
                                    Member = member.ToString()
                                }))
        .ToList();

但這省略了嵌套類、屬性,並且可能應該以幾種方式擴展以滿足問題需求。

如果你沒有 VS - 我喜歡 ILSpy。 微軟現在在應用商店發布它。

暫無
暫無

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

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