我想列出所有处于一个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