系统程序集上的.NET反射在系统上失败.Data.dll

本文关键字:系统 失败 dll Data NET 程序集 反射 | 更新日期: 2023-09-27 17:59:06

我有一个刚刚更新为目标的语言编译器。NET 4.0和框架程序集的元数据生成器现在在系统上失败。Data.dll,而所有其他都可以正常工作(mscorlib、System等)

元数据生成器只是加载程序集,反映所有类型和memberinfo,并为该语言生成一个存根类。

我正在使用Assembly。Load()和/或Assembly.ReflectionOnlyLoad()

无法加载文件或程序集'file:///c:''windows''Microsoft。NET''framework''v4.0.30119''System.Data.dlll'或其依赖项之一。试图用加载程序不正确的格式

它是为"AnyCPU"而构建的。我正在使用运行Windows 7/x64。NET 4.5更新已安装。

系统程序集上的.NET反射在系统上失败.Data.dll

如果您使用corflags工具来分析程序集,您应该会看到ILONLY: 0 for System。Data.dll,而其他(mscorlib,System)ILONLY: 1。有关ILONLY的更多信息,请访问此处。

因此,程序集是以不同的方式构建的,您不应该期望反射适用于所有程序集系统。Data.dll似乎是一个混合模式程序集,它总是依赖于位。

如果你不能以32位的方式运行你的应用程序来加载32位的程序集,你可以考虑Mono。正如@xmojmr所说,Cecil支持读取混合模式程序集。