在不使用依赖程序集的程序集中获取类型

本文关键字:程序集 程序 集中 获取 取类型 依赖 | 更新日期: 2023-09-27 18:22:36

我有一个C#程序集,但没有它的依赖程序集。

是否有任何方法可以在没有依赖项程序集的情况下获取.Net程序集的GetTypes()。

 Assembly SampleAssembly;
 SampleAssembly = Assembly.LoadFrom(@"AnyExternal.dll");
 var mytypes = SampleAssembly.GetExportedTypes();

我有AnyExternal.dll,但我没有它的依赖项。

有可能吗。

在不使用依赖程序集的程序集中获取类型

由于您只想发现类型名称,Mono.Cecil可以帮助您:

var types = AssemblyDefinition
    .ReadAssembly("YourAssembly.dll")
    .MainModule
    .Types
    .Where(_ => _.IsPublic);

注意,Where(_ => _.IsPublic)不是Assembly.GetExportedTypes的严格等价物,因为最后一个也返回嵌套的公共类型。

要将Mono.Cecil添加到您的项目中,请执行:

Install-Package Mono.Cecil

从Package Manager控制台。

我想这就是我想要的。

http://www.codeproject.com/Articles/3262/A-NET-assembly-viewer

此查看器不使用任何第三方,可以提取程序集信息。