2010-11-15 28 views

Trả lời

1

Đang cố gắng để tìm hiểu bằng cách tải lắp ráp là một đề xuất gà và quả trứng. Nếu bạn không nhận được một BadImageFormatException thì vòm là thích hợp và bạn không còn quan tâm nó là gì nữa. Nếu bạn nhận được ngoại lệ thì cấu hình của chương trình là sai. Không có gì bạn có thể làm về điều đó trong mã.

+0

Trừ khi bạn sử dụng 'ReflectionOnlyLoadFrom'. http://stackoverflow.com/q/9470199/103167 –

9

Giả sử bạn chỉ đang xem các hội đồng .net, bạn có thể sử dụng CorFlags.exe để xem tiêu đề của hình ảnh.

This blog post giải thích cách sử dụng để xác định cách đọc kết quả. Trích:

Cách sử dụng: Corflags.exe hội [tùy chọn]

Nếu không có tùy chọn được quy định, những lá cờ cho hình ảnh nhất định được hiển thị.

...

Đây là những gì mỗi thành phần của tiêu đề có nghĩa là:

Version: Chứa các phiên bản của .NET Redist mà nhị phân là xây dựng.

Tiêu đề CLR: 2.0 cho biết hình ảnh .Net 1.0 hoặc .Net 1.1 (Everett) trong khi 2,5 cho biết hình ảnh .Net 2.0 (Whidbey).

CorFlags: này được tính bằng cờ cụ thể OR'g để cho biết hình ảnh là ILONLY vv bitness và được sử dụng bởi các bộ nạp. XÃ HỘI: Được quản lý hình ảnh được phép chứa mã số gốc. Để trở thành “anycpu”, hình ảnh chỉ chứa IL.

32bit: Thậm chí nếu bạn có một hình ảnh mà chỉ chứa IL nó vẫn có thể có nền tảng phụ thuộc, các 32bit cờ được sử dụng để phân biệt “x86” hình ảnh từ hình ảnh “anycpu”. Hình ảnh 642 bit được phân biệt bằng thực tế rằng chúng có PE loại PE32 +.
Khía cạnh thú vị nhất là cờ PE và cờ 32BIT của tiêu đề. Những kết hợp này để chỉ định các loại lắp ráp .Đây là cách họ sẽ tìm như cho:

  • anycpu: PE = PE32 và 32bit = 0
  • x86: PE = PE32 và 32bit = 1
  • 64-bit: PE = PE32 + và 32bit = 0
+0

Điều gì là tốt hơn: 1) AssemblyName.ProcessorArchitecture, 2) CorFlags.exe (và Parser C# - Process.Start), 3) ApiChange https: //apichange.codeplex. com/hoặc 4) Trình đọc PE http://stackoverflow.com/a/9767750/206730? – Kiquenet

+0

Tôi cài đặt VS 2008, VS 2010, VS 2012 và VS 2013. Tôi có 8 tệp CorFlags.exe trong thư mục con trong C: \ Program Files (x86) \ Microsoft SDKs \ Windows \. Tôi nên sử dụng cái nào? – Kiquenet

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