2010-11-15 75 views

回答

1

試圖加載程序集,找出是一個先有雞還是先有蛋的命題。如果你沒有得到一個BadImageFormatException,那麼這個拱是適當的,你不再關心它是什麼。如果你確實得到了異常,那麼程序的配置是錯誤的。在代碼中你無能爲力。

+0

除非你使用'ReflectionOnlyLoadFrom'。 http://stackoverflow.com/q/9470199/103167 – 2012-02-27 18:38:06

9

假設您只查看.net程序集,可以使用CorFlags.exe來查看圖像的標題。

This blog post解釋了用於確定如何讀取結果的用法。摘錄:

用法:Corflags.exe大會[選項]

如果沒有指定任何選項,將顯示給定的圖像標誌。

...

這裏是頭部的每個組件是指:

版本:包含.NET的Redist與二進制是 內置的版本。

CLR標頭:2.0表示.Net 1.0或.Net 1.1(Everett)圖像,而2.5表示.Net 2.0(Whidbey)圖像。

CorFlags:這是通過OR'g特定的標誌來計算以指示 圖像是否是ILONLY,其位數等,並且 使用由加載程序。 ILONLY:託管 圖像被允許包含原生 的代碼。要成爲「anycpu」,圖像應該只包含IL。

32BIT:即使你只包含IL仍可能 有平臺依賴性,32位 標誌是用來區分「86」,從「anycpu」圖像 圖像的圖像。 64位 圖像通過事實 區分它們具有PE類型的PE32 +。
最有趣的方面是標題的PE和32BIT標誌。 這些組合來指定組件 類型。下面是他們將如何看 像:

  • anycpu:PE = PE32和32位= 0
  • 86:PE = PE32和32位= 1
  • 64位:PE = PE32 +和32BIT = 0
+0

什麼是更好的:1)AssemblyName.ProcessorArchitecture,2)CorFlags.exe(和解析器C# - Process.Start),3)ApiChange https://apichange.codeplex。 COM /或4)PE閱讀器http://stackoverflow.com/a/9767750/206730? – Kiquenet 2014-03-25 14:56:52

+0

我安裝VS 2008,VS 2010,VS 2012和VS 2013.我在C:\ Program Files(x86)\ Microsoft SDKs \ Windows \中的子文件夾中有8個文件CorFlags.exe。我應該用哪個? – Kiquenet 2014-03-25 15:04:56

相關問題