如何从.Net DLL获取公共导出列表?

时间:2014-01-22 21:40:11

标签: c# .net dll

我可以使用像“dumpbin”和“dll export”这样的工具来查看标准win32 DLL的公共入口点(“exports”),如Windows \ SYSTEM32 \ GDI32.dll。但是当我在.Net DLL上使用这些相同的工具时,我看到的就像是

    2000 .reloc
    2000 .rsrc
   48000 .text

我有一个C#/ .Net DLL,提供控制工业流程的入口点,我想根据我们的文档检查其公共入口点,以确保公共文档的完整性。什么工具显示.Net DLL的公共入口点?

我已经尝试过Jetbrains DotPeek,它将我们的DLL完全反编译成C#源代码,但这样做太过分了,因为它显示了一切,并且似乎没有一个汇总模式,它只报告公共入口点。

2 个答案:

答案 0 :(得分:4)

我认为“入口点”是指“公共课程和方法”

如何使用visual Studio对象浏览器?

  1. 创建测试项目
  2. 添加对要检查的DLL的引用。
  3. 双击参考以打开对象浏览器
  4. 点击小“齿轮”图标,取消选中“显示私人会员”,“显示受保护的会员”,“显示其他会员”,这样您就只能看到公共内容。
  5. 开始浏览。

答案 1 :(得分:2)

仅作为起点,如何列出当前程序集中的所有公共类型并列出所有公共方法:

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();

但是这省略了嵌套的类,属性,并且应该可以通过几种方式扩展以满足问题需求。