欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

检查.net dll构建的目标平台是any cpu、x86、x64

程序员文章站 2022-07-02 13:46:32
有时候,需要检查构建的dll是否针对正确的平台 可以使用CorFlags.exe(它是.NET Framework SDK的一部分)从dll中查找此信息。运行CorFlags.exe将产生以下输出: 我们需要关注的两个参数是“PE”和“32BITREQ”​​ 要以编程方式确定目标平台,我们可以使用M ......

有时候,需要检查构建的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/