2013-09-04 21 views

Trả lời

18

Mở Visual Studio Command Prompt (Trong Windows: Menu Start/Programs/Microsoft Visual
Studio/Visual Studio Tools/Visual Studio 2010 Command Prompt)

CD vào thư mục chứa các DLL trong câu hỏi

Run CorFlags như thế này:

corflags MyAssembly.dll 

Kết quả trông như thế này:

Microsoft (R) .NET Framework CorFlags Conversion Tool. Version 4.0.30319.1 

Copyright (c) Microsoft Corporation. All rights reserved. 

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 1 
ILONLY : 1 
32BIT  : 0 
Signed : 0 

Cờ giải thích:

Any CPU: PE = PE32 and 32BIT = 0 

x86: PE = PE32 and 32BIT = 1 

64-bit: PE = PE32+ and 32BIT = 0 
+7

Câu trả lời tại http://stackoverflow.com/a/23614024/3923734 được cập nhật nhiều hơn số này. – user145400

+2

Trong khi kỹ thuật xác định cho thời gian của nó .... câu trả lời dưới đây cho .NET 4.5 là chính xác hơn/cập nhật. –

+0

Là trình biên dịch "Mọi CPU", đầu ra Corflags là lạ đối với tôi PE: PE32 + | 32BIT: 0. là điều này có thể? –

7

Bạn cũng có thể sử dụng bảng này:

 
    CPU | PE | 32BIT 
    ----------|-------|------ 
    x86  | PE32 | 1 
    Any CPU | PE32 | 0 
    x64  | PE32+ | 0 
+1

Cũng trong * [Làm thế nào để xác định xem một hội đồng. NET được xây dựng cho x86 hay x64?] (Http://stackoverflow.com/questions/270531/how-to-determine-if-a-net-assembly-was- built-for-x86-or-x64/270545 # 270545) * –

62

Microsoft .NET 4.5 giới thiệu một tùy chọn mới, Bất kỳ CPU 32-bit Ưu tiên. Trong phiên bản mới của CorFlags.exe, cờ 32BIT không còn tồn tại, thay vào đó, hai cờ mới đã được thêm vào, 32BITREQ32BITPREF.

Một nơi nào đó dựa trên giải thích dưới đây, chúng tôi có thể giải thích các thẻ CorFlags mới như sau.

CPU Architecture   PE  32BITREQ 32BITPREF 
------------------------ ----- -------- --------- 
x86 (32-bit)    PE32   1   0 
x64 (64-bit)    PE32+   0   0 
Any CPU     PE32   0   0 
Any CPU 32-Bit Preferred PE32   0   1 

Flags hiển thị bởi CorFlags.exe tọa lạc tại C: \ Program Files (x86) \ Microsoft SDKs \ Windows \ v8.1A \ bin \ NETFX 4.5.1 Công cụ

Version : Assembly's target framework. 
Header : 2.0/2.5 (Must have version of 2.5 or greater to run natively) 
PE  : PE32 (32-bit)/PE32+ (64-bit) 
CorFlags : Hexadecimal value, computed based on below 4 flags. 
ILONLY : 1 if MSIL otherwise 0 
32BITREQ : 1 if 32-bit x86 only assembly otherwise 0 
32BITPREF : 1 if 32-bit x86 only preferred in Any CPU architecture otherwise 0 
Signed : 1 if signed with strong name otherwise 0 

Ví dụ sau minh họa đầu ra của C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\CorFlags.exe cho hội khác nhau.

PresentationCore.dll từ GAC_32

CorFlags.exe "C:\Windows\Microsoft.NET\assembly\GAC_32\PresentationCore\v4.0_4.0.0.0__31bf3856ad364e35\PresentationCore.dll" 

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 0xb 
ILONLY : 1 
32BITREQ : 1 
32BITPREF : 0 
Signed : 1 

System.Data.dll từ GAC_64

CorFlags.exe "C:\Windows\Microsoft.NET\assembly\GAC_64\System.Data\v4.0_4.0.0.0__b77a5c561934e089\System.Data.dll" 

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32+ 
CorFlags : 0x18 
ILONLY : 0 
32BITREQ : 0 
32BITPREF : 0 
Signed : 1 

System.dll từ GAC_MSIL

CorFlags.exe "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll" 

Version : v4.0.30319 
CLR Header: 2.5 
PE  : PE32 
CorFlags : 0x9 
ILONLY : 1 
32BITREQ : 0 
32BITPREF : 0 
Signed : 1 

Để biết thêm về Bất kỳ CPU 32-bit ưa thích hội tham khảo What AnyCPU Really Means As Of .NET 4.5 and Visual Studio 11

+0

Ví dụ tuyệt vời .. Cảm ơn bạn rất nhiều. – Karan

6

Để thêm chi tiết hơn để các câu trả lời khác, giá trị quan trọng thực tế là CorFlags thập lục phân giá trị vì nó mang nhiều thông tin nhất. Dưới đây là danh sách các bit mà bao gồm nó:

[Flags] 
public enum CorFlags 
{ 
    ILOnly   = 0x00000001, 
    Requires32Bit = 0x00000002, 
    ILLibrary  = 0x00000004, 
    StrongNameSigned = 0x00000008, 
    NativeEntryPoint = 0x00000010, 
    TrackDebugData = 0x00010000, 
    Prefers32Bit  = 0x00020000, 
} 

CorFlags kết quả đầu ra bốn bit của giá trị này riêng (ILONLY, 32BITREQ, 32BITPREF và ký). Tuy nhiên, giá trị CorFlags đầy đủ cũng chứa thông tin về việc assembly có được ký tên mạnh hay ký trễ (0x8 bit) cũng như các bit ILLibrary, NativeEntryPoint và TrackDebugData (tôi không biết ý nghĩa của nó).

Lưu ý rằng đầu ra CorFlags Đã ký không chính xác là bit StrongNameSigned. Nó sẽ in Signed 1 nếu assembly bị trì hoãn hoặc được ký đầy đủ, trong khi bit StrongNameSigned được thiết lập nếu assembly chỉ được ký đầy đủ.

+0

Theo như tôi có thể nói, 'CorFlags.ILLibrary' được đặt cho phiên bản Hình ảnh Gốc của các hội đồng. –

Các vấn đề liên quan