0

我想列出 DLL 中的所有类,而无需加载依赖项。我不想执行任何功能,我只想(有问题地)找出给定 DLL 中的类。那可能吗?我尝试使用 assembly.GetTypes() 调用,但由于执行 DLL 的依赖关系而失败。有没有其他方法可以列出所有的公共课程?

4

3 回答 3

1

我建议你使用 mono Cecil库。这是基本示例:

//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);
}

这不会加载所有依赖项。

于 2012-12-30T18:24:15.400 回答
0

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

如何:将程序集加载到仅反射上下文中

您还需要附加AppDomain.ReflectionOnlyAssemblyResolve as 在仅反射上下文中,依赖项不会自动解析。

于 2012-12-30T18:23:45.507 回答
0

好的,我找到了。这种组合可以获取所有类的列表,而无需处理依赖关系:

程序集程序集 = Assembly.LoadFrom(filename); Type[] types = assembly.GetTypes();

于 2013-05-01T00:10:59.857 回答