不使用依赖程序集的程序集中的 GetTypes

GetTypes in an assembly without using dependencies assemblies

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

有没有什么方法可以在没有依赖程序集的情况下获取 .Net 程序集的 GetTypes()。

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

我有 AnyExternal.dll 但我没有它的依赖关系。

可以吗

由于您只想发现类型 namesMono.Cecil 可以帮助您:

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

请注意,Where(_ => _.IsPublic) 并不严格等同于 Assembly.GetExportedTypes,因为最后一个 returns 嵌套了 public 类型。

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

Install-Package Mono.Cecil

来自程序包管理器控制台。

我想这就是我要找的。

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

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