檢查.net dll構建的目標平臺是any cpu、x86、x64

吳旭標發表於2018-11-13

有時候,需要檢查構建的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/

相關文章