.net 如何(通过代码)确定程序集标志?
我需要编写一个类似CorFlags的应用程序。 如果我有一个指向程序集文件的路径,如何读取它的CorFlags 我特别需要知道这个程序集是CPU还是x86 我希望避免使用反射加载程序集,因为我需要扫描许多文件 看看链接,它描述了与您的查询类似的情况。公认的答案描述了如何使用反射和。这可能对你有帮助 编辑:有点晚了,但这里有一个例子:.net 如何(通过代码)确定程序集标志?,.net,assemblies,32bit-64bit,corflags,.net,Assemblies,32bit 64bit,Corflags,我需要编写一个类似CorFlags的应用程序。 如果我有一个指向程序集文件的路径,如何读取它的CorFlags 我特别需要知道这个程序集是CPU还是x86 我希望避免使用反射加载程序集,因为我需要扫描许多文件 看看链接,它描述了与您的查询类似的情况。公认的答案描述了如何使用反射和。这可能对你有帮助 编辑:有点晚了,但这里有一个例子: namespace ConsoleApplication1 { using System.Reflection; public class Pro
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);
}
}
}
System.Reflection.Assembly在这方面有很多帮助
var asmbly = Assembly.ReflectionOnlyLoad("filename");
var PeFlags = asmbly.ManifestModule.GetPEKind();
//PeFlags is effectively CorFlags.
如果您不想使用反射,可以签出 CCI或
Mono.CecilCCI工作得很好。比使用反射加载所有程序集快得多预期性能更好,因为CCI只是直接从程序集读取元数据。反射将加载整个程序集,这注定要慢得多。幸运的是,CCI已经开源并公开发布。:)GetPEKind在检查32位汇编时在64位进程中失败感谢提示:)