我有一个C#程序集,但我没有它的依赖程序集。
.Net程序集的GetTypes()是否有任何方法可以在没有依赖程序集的情况下使用。
Assembly SampleAssembly;
SampleAssembly = Assembly.LoadFrom(@"AnyExternal.dll");
var mytypes = SampleAssembly.GetExportedTypes();
我有AnyExternal.dll,但我没有它的依赖。
是否可能。
答案 0 :(得分:3)
由于您只想发现类型名称,Mono.Cecil可以帮助您:
var types = AssemblyDefinition
.ReadAssembly("YourAssembly.dll")
.MainModule
.Types
.Where(_ => _.IsPublic);
注意,Where(_ => _.IsPublic)
不是Assembly.GetExportedTypes
的严格等价物,因为最后一个也返回嵌套的公共类型。
要将Mono.Cecil添加到项目中,请执行:
Install-Package Mono.Cecil
从包管理器控制台。
答案 1 :(得分:0)
我认为这就是我在寻找的东西。
http://www.codeproject.com/Articles/3262/A-NET-assembly-viewer
此查看器不使用任何第三方,可以提取汇编信息。