Sqlite   发布时间:2022-05-22  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了SQLite的.NET应用自适应32位/64位系统大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

转自:http://www.cnblogs.com/zeroone/p/4316346.HTML

如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any cpu”。但是如果应用中使用了sqlite,情况就不同了。

   sqlite的.NET开发包来自是System.Data.sqlite,完成兼容ADO.NET接口,也提供了linq和Entity Framework 6实现。但这不重要,重要的是System.Data.sqlite是由两部分代码组成的,一部分是非托管的C++代码实现,一部分是托管代码与.NET 框架接口。由于非托管代码不能构建成“Any cpu”的,所以System.Data.sqlite的下载页面的每个包都是按32位或64位系统进行了区分的。

  说到这里,顺便说一下,看着System.Data.sqlite的下载页面就头晕。然在下载页面一开始就花了大量的篇幅来说明如何选择下载,但是估计没几个人会把它看完,所以这里还是简单介绍一下。

   1) 首先是按类型分为安装包、非静态连接的二进制包和静态连接的二进制包。安装包会安装相关的动态库到系统内,并注册到GAC(Global Assembly Cache);两种二进制包的区别在于非托管部分的连接方式不同,非静态连接的二进制包在使用时需要VC运行时库的支持。需要注意的是:如果需要在 Visual studio中连接sqlite数据库,就必须选择合适的安装包进行安装。

  比如,要在Visual studio 2010中连接sqlite,应该下载“sqlite-netFx40-setup-bundle-x86-2010-1.0.90.0.exe”,这在下载包的说明中有明确黑体字说明。


[下载包的说明中有明确的黑体字说明]

  安装之后就可以在Visual studio 2010中连接sqlite了:

[在Visual studio中连接sqlite]

   2) 每个类型都按.NET版本分成了若干小组,目前从.NET 2.0 SP2到.NET 4.5.1,一共支持5个版本的.NET Framework。每个.NET版本又分为32位和64位两组。选用32位还是64位是根据使用系统来决定的。比如开发的时候是64位系统而发布后运行 在32位系统上,就需要在开发时使用64位System.Data.sqlite.dll,而在发布时用32位的 System.Data.sqlite.dll替换(看起来很麻烦的样子~~请看后面的解决办法~~)。

   3) 在每个.NET版本分组中都有2个文件包,一个带有“bundle”字样,另一个没有。其中带有“bundle”字样的表示动态库是按混合模式编译的,在 使用的时候只需要System.Data.sqlite.dll就可以了,而不带“bundle”的则是将非托管部分和托管部分分别编 译,System.Data.sqlite.dll不能独立使用,还需要有sqlite.Interop.dll才能使用。

  言归正传,如果要使用“Any CPU”的System.Data.sqlite.dll,就必须使用不带“bundle”字样,即非混合编译的二进制包。

   非混合编译的二进制包有System.Data.sqlite.dll和sqlite.Interop.dll两个动态库。按官方说 明,sqlite.Interop.dll是可以放与System.Data.sqlite.dll相同的目录下,也可以放在x86或x64子目录下,由 System.Data.sqlite.dll根据系统类型调用。为了确认,下载如下两个包来进行比较:

sqlite-netFx40-binary-Win32-2010-1.0.90.0.zip

sqlite-netFx40-binary-x64-2010-1.0.90.0.zip

  结果发现只有sqlite.Interop.*不同,其它文件都完全相同


[比较结果:只有sqlite.Interop.*不同]

  然后将两个包的sqlite.Interop.*分别放在x86和x64子目录下,合并成一个包。再在不同类型的系统下运行test.exe,结果都是完全通过

   最后需要做的就是在Visual studio项目中引用System.Data.sqlite.dll,再将x86\sqlite.Interop.dll和x64 \sqlite.Interop.dll拷贝到项目根目录,包含在项目中,在属性中设置“如果较新则复制”或“始终复制”。生成结果就像这样:

Testsqlite\bin\DeBUG

│ System.Data.sqlite.dll

│ Testsqlite.exe

├─x64

sqlite.Interop.dll

└─x86

sqlite.Interop.dll

  组合后的包命名为“sqlite-netFx40-static-binary-x86-x64-2010-1.0.90.0.zip”,共享给大家,欢迎下载使用。

◆51CTO资源站共享

◆360云盘共享

大佬总结

以上是大佬教程为你收集整理的SQLite的.NET应用自适应32位/64位系统全部内容,希望文章能够帮你解决SQLite的.NET应用自适应32位/64位系统所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: