Взгляд System.Reflection.AssemblyName.GetAssemblyName(string assemblyFile)
можно исследовать метаданные блока от возвращенного экземпляра AssemblyName:
Используя [1 114] 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 HashAlgorithm : SHA1 VersionCompatibility : SameMachine KeyPair : FullName : Microsoft.GLEE, Version=1.0.0.0, Culture=neut...
Здесь, ProcessorArchitecture определяет целевую платформу.
я использую PowerShell в этом примере для вызова метода.
Можно использовать инструмент CorFlags CLI (например, C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\CorFlags.exe) для определения состояния блока, на основе его вывода и открытия блока как двоичный актив необходимо быть в состоянии определить, где необходимо стремиться определить, установлен ли флаг 32BIT на 1 ( x86) или 0 ( Какой-либо ЦП или x64, в зависимости от PE
):
Option | PE | 32BIT
----------|-------|---------
x86 | PE32 | 1
Any CPU | PE32 | 0
x64 | PE32+ | 0
сообщение в блоге x64 Разработка с.NET имеет некоторую информацию [приблизительно 112].
Еще лучше, Вы можете использование Module.GetPEKind
, чтобы определить, является ли блок PortableExecutableKinds
значение PE32Plus
(64-разрядным), Required32Bit
(32-разрядный и WOW), или ILOnly
(какой-либо ЦП) наряду с другими атрибутами.
Just for clarification, CorFlags.exe is part of the .NET Framework SDK. I have the development tools on my machine, and the simplest way for me determine whether a DLL is 32-bit only is to:
Open the Visual Studio Command Prompt (In Windows: menu Start/Programs/Microsoft Visual Studio/Visual Studio Tools/Visual Studio 2008 Command Prompt)
CD to the directory containing the DLL in question
Run corflags like this:
corflags MyAssembly.dll
You will get output something like this:
Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 3.5.21022.8
Copyright (c) Microsoft Corporation. All rights reserved.
Version : v2.0.50727
CLR Header: 2.5
PE : PE32
CorFlags : 3
ILONLY : 1
32BIT : 1
Signed : 0
As per comments the flags above are to be read as following: