我有一个任意列表.NET程序集.

我需要以编程方式判断每个DLL是否都是为x86(而不是x64或任何CPU)构建的.这个是可能的吗?

推荐答案

System.Reflection.AssemblyName.GetAssemblyName(string assemblyFile)

您可以从返回的AssemblyName实例中判断程序集元数据:

使用PowerShell:

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

Name                  : Microsoft.GLEE
Version               : 1.0.0.0
CultureInfo           :
CodeBase              : file:///C:/projects/powershell/BuildAnalyzer/...
EscapedCodeBase       : file:///C:/projects/powershell/BuildAnalyzer/...
ProcessorArchitecture : MSIL
Flags                 : PublicKey
Hash算法rithm         : SHA1
VersionCompatibility  : SameMachine
KeyPair               :
FullName              : Microsoft.GLEE, Version=1.0.0.0, Culture=neut... 

这里,ProcessorArchitecture标识目标平台.

  • Amd64:基于x64体系 struct 的64位处理器.
  • Arm:ARM处理器.
  • IA64:仅限64位英特尔安腾处理器.
  • MSIL:相对于处理器和每字位数为中性.
  • X86:32位英特尔处理器,本机处理器或64位平台(WOW64)上的Windows on Windows环境中的32位英特尔处理器.
  • None:处理器和每个字的位的未知或未指定的组合.

在本例中,我使用PowerShell来调用该方法.

.net相关问答推荐

在PowerShell中,XML子对象和属性是对象属性.它怎麽工作?

为什么 .NET 中的 System.Version 定义为 Major.Minor.Build.Revision?

为什么这两个比较有不同的结果?

如何使用 Moq 为不同的参数设置两次方法

如何获取 Sql Server 数据库中所有模式的列表

如何将浮点数向上舍入到 C# 中最近的 int?

共享 AssemblyInfo 用于跨解决方案的统一版本控制

你如何调试 MVC 4 API 路由?

从 C# 中的接口继承 XML 注释

寻找 .NET 的命令行参数解析器

ObservableCollection<> 与 List<>

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

单元测试 C# 保护方法

绑定到不在列表中的值的可编辑组合框

确定使用 ContextMenuStrip 的控件

接口属性的 XML 序列化

为什么要使用 C# 类 System.Random 而不是 System.Security.Cryptography.RandomNumberGenerator?

WPF中的依赖属性和附加属性有什么区别?

Dictionary.Add 与 Dictionary[key]=value 的区别

如何在我的机器上找到 fuslogvw.exe?