zoukankan      html  css  js  c++  java
  • 检查.net dll构建的目标平台是any cpu、x86、x64

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

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

    >> CorFlags "C:example.dll"
    
    Microsoft (R) .NET Framework CorFlags Conversion Tool.  Version  4.6.1590.0
    Copyright (c) Microsoft Corporation.  All rights reserved.
    
    Version   : v4.0.30319
    CLR Header: 2.5
    PE        : PE32
    CorFlags  : 0x3
    ILONLY    : 1
    32BITREQ  : 1
    32BITPREF : 0
    Signed    : 0

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

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

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

    Assembly a = Assembly.ReflectionOnlyLoadFrom(@"C:example.dll");
     
    PortableExecutableKinds peKind;
    ImageFileMachine machine;
     
    a.ManifestModule.GetPEKind(out peKind, out machine);
     
    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/

  • 相关阅读:
    2.6
    2.5
    2.4
    2.3
    2.2
    2.1
    条件查询
    项目办公自动化工具-文件夹照片批量插入word·
    suffer根据CGCS2000坐标利用散点图生成奥维坐标
    案例应用:给照片文件夹里照片按日期排序后引用表格的照片名称批量重命名(源码)
  • 原文地址:https://www.cnblogs.com/wuxubiao/p/9951648.html
Copyright © 2011-2022 走看看