我有一个语言编译器,我刚刚更新到目标.NET 4.0,框架程序集的元数据生成器现在在System.Data.dll上失败,而其他所有其他工作正常(mscorlib,System等)
元数据生成器只是加载程序集,反映所有类型和memberinfo,并为该语言生成存根类。
我使用Assembly.Load()和/或Assembly.ReflectionOnlyLoad()
无法加载文件或程序集' file:/// c:\ windows \ Microsoft.NET \ framework \ v4.0.30319 \ System.Data.dll' 或其中一个依赖项。尝试加载程序 格式不正确。
它是为#34; AnyCPU"而构建的。我安装了.NET 4.5更新,运行Windows 7 / x64。
答案 0 :(得分:2)
如果使用corflags
工具分析程序集,您应该看到ILONLY: 0
表示System.Data.dll,而其他人(mscorlib,System)ILONLY: 1
。有关ILONLY的更多信息,请访问here。
因此,程序集的构建方式不同,您不应期望反射适用于所有人。 System.Data.dll似乎是一个混合模式程序集,它始终与位数有关。
如果您无法将应用程序作为32位运行以加载32位程序集,则可以将Mono.Cecil视为@xmojmr表示为it supports reading mixed-mode assemblies。