1. 程式人生 > >檢查.net dll構建的目標平臺是any cpu、x86、x64

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

example out exe 使用 mic ons tar ima target

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

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