2010-11-15 67 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