Ang*_*ker 7 .net c# compilation x86-64
我需要以编程方式确定程序集是x86,x64还是AnyCPU?有一个几乎相同的问题,但它提供的解决方案
Assembly assembly = Assembly.LoadFrom(fileName);
PortableExecutableKinds peKind;
ImageFileMachine imageFileMachine;
assembly.ManifestModule.GetPEKind(out peKind, out imageFileMachine);
Run Code Online (Sandbox Code Playgroud)
尝试从32位进程加载64位程序集时失败(反之亦然).
是否有一种以编程方式查找程序集的编译类型的万无一失的方法?
编辑:基于@BenVoigt建议,我创建了一个小命令行实用程序,用于检查DLL是否受管理以及是否为x86/x64/AnyCPU.我希望有人发现它有用.
Ben*_*igt 15
这个问题已被涵盖:
但答案是不完整的,建议使用Assembly.LoadFrom.这是一个可怕的想法,因为它会从程序集中运行代码,除非失败,如果位数与您的进程不匹配.
相反,你应该使用Assembly.ReflectionOnlyLoadFrom.这使您可以在不实际加载任何代码的情况下读取元数据,因此不需要架构正确.
| 归档时间: |
|
| 查看次数: |
2717 次 |
| 最近记录: |