什么是混合模式组装?

我正在查看System.Data.SQLite下载页面 ,它列出了.NET 4的混合模式程序集和一个常规(我假设)。 我将要使用这个库的项目都是.NET 4,它将被编译为x86。

我有两个问题:

  1. 什么是混合模式组装? Google返回了一系列令人困惑的答案,这些答案都没有什么意义。 一个答案指出,这是关于混合原生代码和托pipe代码,而其他人声称混合.Net版本。
  2. 我应该为我的情况下载哪个下载?

http://msdn.microsoft.com/en-us/library/x0w2664k.aspx

1)总是先检查MSDN。 混合模式意味着程序集可以运行托pipe代码和非托pipe代码。

2)32位Windows(.NET Framework 4.0)

http://system.data.sqlite.org/sqlite-netFx40-setup-bundle-x86-2010-1.0.74.0.exe

你自己也回答了这个问题:“我打算使用这个库的项目都是.NET 4,它将被编译为x86。”

有一种方法可以从纯IL生成混合模式程序集。 使用reflection创build程序集的最后一部分涉及对AssemblyBuilder.Save的调用。 如果您只是为portableExecutableKindparameter passingPortableExecutableKinds.Required32Bit,那么您将创build一个混合模式程序集。 您可以通过传递PortableExecutableKinds.ILOnly来避免这个问题。 即

assembly_bldr.Save(exe_name, PortableExecutableKinds.Required32Bit | PortableExecutableKinds.ILOnly, ImageFileMachine.I386 ); 

不用说,这个信息很难赢得…

采取从官方常见问题

(14)什么是混合模式程序集?

混合模式程序集是一个dynamic链接库,包含特定处理器体系结构的托pipe代码和本地代码。 由于它包含本机代码,因此只能将其加载到与编译的处理器体系结构相匹配的进程中。 另请参阅此StackOverflow问题。

它甚至提到这个问题!