• vs2010中使用sqlite及出现的问题


          以前只用VS2008调用过sqlite,今天用VS2010调用sqlite出现了问题,本来想在引用中加载了sqlite的两个动态连接文件后就可以直接调用它的连接对象了。但调用的时候出现了“混合模式程序集是针对....”的错误提示,程序无法运行。

          一开始没有用到sqlite的连接,仅仅调用我对连接数据库的一个封装类中的方法,怎么弄都不能运行到我的方法体中去,当时也没注意太多,设置了很多断点,后来就连窗体自带的的方法也不执行了,直到后面脱离封装的内,单独写了一个sqlite的连接,在调用连接的时候就出现了文章开头描述的错误。

          仔细看了以下sqlite的版本,初步发现了问题,那就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2010年4月18日发布的),而目前官方也没有给出最新的.NET4的数据访问支持。
    在网上搜索了一下,找到了解决的方法,就是在app.config中多添加一个配置节:startup

    < startup useLegacyV2RuntimeActivationPolicy="true"> 
    < supportedRuntime version="v4.0"/> 
    < /startup>  


          这段配置节的意思是(参考自MSDN,具体地址:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx):
    启用 .NET Framework 2.0 版 运行时激活策略,这是通过使用最新支持的运行时加载所有程序集。   注意:由于config配置文件的特性,如果在config配置文件中存在configSections节点,则必须将configSections放在一个,否则会引发异常:配置系统未能初始化
    在原来.NET2.0,.NET3.5的时候,由于程序运行环境本质还是.NET2.0,而到了.NET4.0由于整个程序集的版本更新,以前使用.NET2.0所编写的程序集与.NET4.0的程序集继续拧互操作的时候就会出现上面所说的兼容性问题。
         通过MSDN,我们可以知道,startup配置节中的useLegacyV2RuntimeActivationPolicy属性是在.NET4.0中新增的,默认是false,表示:
    使用默认的 .NET Framework 4 激活策略,该激活策略将加载 .NET Framework 4 通过使用公共语言运行时 (CLR) 版本 4 所创建的程序集,以及 CLR 早期版本通过使用受支持的低于版本 4 的最高 CLR 版本所创建的程序集。   现在如果当程序在.NET4.0环境下要使用.NET2.0及.NET3.5的程序时就必须将useLegacyV2RuntimeActivationPolicy设置为true,同时还要注意,需要在startup配置节的字节中添加supportedRuntime配置节,并指定为“v4.0”,表示使用.NET4.0运行时来运行程序。

    转自:http://blog.csdn.net/xingxing513234072/article/details/16980305

  • 相关阅读:
    C++头文件编译问题
    Windows下Critical Section、Event、Mutex、Semaphores区别
    MFC OnCtlColor函数用来改变控件颜色
    Ctreectrl +CImageList应用
    20091113 08:37 实现文件读写操作的几种方法
    在网上看到这篇文章还不错,OnDrawItem与DrawItem讨论
    Mysql全文搜索match…against的用法
    Django and fulltext search
    Feed DB 搜博客 一个博客搜索引擎
    通过扩展Django数据库API支持全文搜索
  • 原文地址:https://www.cnblogs.com/wranswer/p/4761204.html
Copyright © 2020-2023  润新知