我有.NET程序集的任意列表。

我需要以编程方式检查每个DLL是否针对x86构建(而不是针对x64或Any CPU)。这可能吗?

最佳答案

System.Reflection.AssemblyName.GetAssemblyName(string assemblyFile)

您可以从返回的AssemblyName实例检查程序集元数据:

使用PowerShell:

[36] C:\> [reflection.assemblyname] :: GetAssemblyName(“ $ {pwd} \ Microsoft.GLEE.dll”)| FL

名称:Microsoft.GLEE
版本:1.0.0.0
CultureInfo:
代码库:file:/// C:/ projects / powershell / BuildAnalyzer / ...
EscapedCodeBase:file:/// C:/ projects / powershell / BuildAnalyzer / ...
处理器架构:MSIL
标志:公钥
哈希算法:SHA1
版本兼容性:SameMachine
密钥对:
FullName:Microsoft.GLEE,Version = 1.0.0.0,Culture = neut ...


在这里,ProcessorArchitecture标识目标平台。


Amd64:基于x64架构的64位处理器。
Arm:ARM处理器。
IA64:仅64位Intel Itanium处理器。
MSIL:关于处理器和每字位数是中性的。
X86:32位Intel处理器,本机或在64位平台(WOW64)上的Windows on Windows环境中。
无:处理器和每字位数的未知或未指定的组合。


在此示例中,我使用PowerShell来调用该方法。

10-07 19:19