清单在DLL中的所有类(Listing all the classes in a DLL)

2019-10-30 20:37发布

我想列出所有处于一个DLL类的无需加载的依赖关系。 我不想执行任何功能,我只是想看看(有问题)是一个给定的DLL里面哪些类。 那可能吗? 我已经使用assembly.GetTypes()调用尝试过,但没有成功,因为依赖于执行的DLL。 是否有任何其他的方式列出所有的公开课?

Answer 1:

我建议你使用单塞西尔库。 这是基本的例子:

//Creates an AssemblyDefinition from the "MyLibrary.dll" assembly
AssemblyDefinition myLibrary = AssemblyFactory.GetAssembly ("MyLibrary.dll");

//Gets all types which are declared in the Main Module of "MyLibrary.dll"
foreach (TypeDefinition type in myLibrary.MainModule.Types) {
    //Writes the full name of a type
    Console.WriteLine (type.FullName);
}

这将不会加载所有的依赖。



Answer 2:

您可以使用Assembly.ReflectionOnlyLoad方法加载程序集而不执行它。

如何:加载程序集到的反思,只有上下文

你也需要附加AppDomain.ReflectionOnlyAssemblyResolve因为在只反射上下文,它的依赖不会自动解决。



Answer 3:

好吧,我发现它。 这种组合适用于获得所有类的列表,而无需处理依赖关系:

组件组装= Assembly.LoadFrom(文件名); 类型[]类型= assembly.GetTypes();



文章来源: Listing all the classes in a DLL