经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
检查.net dll构建的目标平台是any cpu、x86、x64
来源:cnblogs  作者:吴旭标  时间:2018/11/14 10:08:08  对本文有异议

有时候,需要检查构建的dll是否针对正确的平台

可以使用CorFlags.exe(它是.NET Framework SDK的一部分)从dll中查找此信息。运行CorFlags.exe将产生以下输出:

  1. >> CorFlags "C:\example.dll"
  2. Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.6.1590.0
  3. Copyright (c) Microsoft Corporation. All rights reserved.
  4. Version : v4.0.30319
  5. CLR Header: 2.5
  6. PE : PE32
  7. CorFlags : 0x3
  8. ILONLY : 1
  9. 32BITREQ : 1
  10. 32BITPREF : 0
  11. Signed : 0

我们需要关注的两个参数是“PE”和“32BITREQ”??

Any CPU PE: PE32, 32BITREQ: 0
x86 PE: PE32, 32BITREQ: 1
x64 PE: PE32+, 32BITREQ: 0

 

 

 

 

要以编程方式确定目标平台,我们可以使用Module.GetPEKind()

  1. Assembly a = Assembly.ReflectionOnlyLoadFrom(@"C:\example.dll");
  2. PortableExecutableKinds peKind;
  3. ImageFileMachine machine;
  4. a.ManifestModule.GetPEKind(out peKind, out machine);
  5. Console.WriteLine(peKind);

peKind的结果可以解释为:

Any CPU ILOnly
x86 ILOnly, Required32Bit
x64 ILOnly, PE32Plus

 

 

 

 

 示例

翻译:https://malvinly.com/2016/11/16/check-whether-a-net-dll-is-built-for-any-cpu-x86-or-x64/

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号