某些程序集在加载时将AssemblyName的ProcessorArchitecture设置为None。之前也有类似的文章,但是它假设GetReferencedAssemblies()中的程序集尚未加载,并且ProcessorArchitecture只是设置为默认值。我的问题是指相同的ProcessorArchitecture,但是在装入此类程序集后检查其值时。很少有程序集显示ProcessorArchitecture设置为None。在我的笔记本电脑上,GAC有大约800个程序集,只有7个显示ProcessorArchitecture设置为None,它们是:adodb,Extensibility,Microsoft.mshtml,Microsoft.StdFormat,mscomctl,MSDATASRC,stdole。 所有七个程序集都有这两个字段的保存值:
Magic number in PE Header: 0x10B (32-bit)
Corflags in CLR Header: 0x09 (ILOnly, StrongNameSigned)
许多其他程序集具有相同的值,但所有程序集都将ProcessorArchitecture设置为MSIL。那么确定ProcessorArchitecture的其他参数还有哪些?我假设加载程序仅基于这两个字段来确定ProcessorArchitecture。