如何确定(通过代码)组件的符号?
我需要编写一个类似CorFlags的应用程序。 如果我有一个装配文件的路径,如何读取它的CorFlags?如何确定(通过代码)组件的符号?
我特别需要知道,如果大会只有
我想避免使用反射,因为我需要扫描许多文件加载组件中的任何-CPU或x86。
如果你不想使用反射,可以签出
CCI http://ccimetadata.codeplex.com/Wiki/View.aspx?title=API%20overview或
Mono.Cecil能http://www.mono-project.com/Cecil
检查32位时
看看this链接,它描述了与您的查询类似的情况。接受的答案描述了如何使用反射和Module.GetPEKind。这可能会帮助你。
编辑:有点晚了,但这里有一个例子:
namespace ConsoleApplication1
{
using System.Reflection;
public class Program
{
public static void Main()
{
Assembly a = Assembly.GetExecutingAssembly();
PortableExecutableKinds peKind;
ImageFileMachine machine;
a.ManifestModule.GetPEKind(out peKind, out machine);
}
}
}
GetPEKind在64位进程失败组装 – Kiquenet 2014-03-25 18:20:38
感谢您的提示:) – 2014-03-25 21:08:57
System.Reflection.Assembly拥有的东西一大堆,帮助你在这。
var asmbly = Assembly.ReflectionOnlyLoad("filename");
var PeFlags = asmbly.ManifestModule.GetPEKind();
//PeFlags is effectively CorFlags.
CCI工作得很好。使用反射加载所有组件的速度要快得多 – Saar 2009-10-31 10:44:44
预计会有更好的性能,因为CCI只是直接从组件中读取元数据。反射会加载整个注定要慢得多的组件。幸运的是,CCI已经公开发布并公开发布。 :) – 2009-10-31 11:33:01