.net 4.0 运行时中运行.net2.0开发的程序

其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2010年4月18日发布的),而目前官方也没有给出最新的.NET4的数据访问支持。

既然出现这个问题,那肯定是上GOOGLE搜索解决方案,毕竟微软不可能因为升级到了.NET4.0的程序无法访问.NET2.0的程序集吧。后来在著名的stackoverflow.com上果然找到了解决方案,就是在app.config中添加一个配置节:startup

<?xml version="1.0"?><configuration>  <startup useLegacyV2RuntimeActivationPolicy="true">    <supportedRuntime version="v4.0" sku = ".NETFramework,Version=v4.0"/>    <supportedRuntime version="v2.0.50727"/>  </startup></configuration>

这段配置节的意思是(参考自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运行时来运行程序。

 

有关更多startup及其子级可以查看MSDN:

startup:http://msdn.microsoft.com/zh-cn/library/bbx34a2h.aspx

supportedRuntime:http://msdn.microsoft.com/zh-cn/library/w4atty68.aspx

源:http://hi.baidu.com/mubingyun/blog/item/aa4c833d832d7ae03c6d97e4.html[转载于]

时间: 2024-08-07 08:06:59

.net 4.0 运行时中运行.net2.0开发的程序的相关文章

[VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”

在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,20

C# .NET4.0 改为 到.NET2.0 时 TypedTableBase 报错解决方法

.NET 4.0 降版本 到.NET 2.0.不出意外,问题必然来了. 编译错误一: 错误 1 命名空间“System”中不存在类型或命名空间名称“Linq”(是缺少程序集引用吗?)解决: 删掉该引用--没用到情况下,呵呵 使用Linq时,引用一个LinqBridge.dll 就可以了 编译错误二: 错误 2 命名空间“System.Data”中不存在类型或命名空间名称“TypedTableBase”(是缺少程序集引用吗?) 解决: 该错误出现在代码生成工具生成Dataset的片段里面. .NE

win7系统总是安装不了net2.0的解决方法

一些网友询问说ghost win7系统总是安装不了net2.0怎么办呢?net2.0是什么?ATI显卡的控制中心 就需要在NET2.0的基础上.可是一些用户说win7系统总是安装不了net2.0如何解决呢?针对此问题,下面教程和大家分享win7系统总是安装不了net2.0的解决方法. 解决方法如下: 1.如默认的不具备2.0组件就在控制面板-程序-打开关闭win功能-.NET Framework3.5去掉前面的选择即可. 2.然后下载win7 64位版本的2.0组件安装即可. 以上教程内容就是w

Win10安装.net2.0/3.0

Windows 安装.net2.0/3.0 将下列代码拷到本地bat文件中(bat文件和sxs文件夹同级),下载适用的.net安装包版本后放置到sxs文件夹,用管理员权限执行bat文件即可. @echo off pushd %~dp0 IF NOT EXIST D:\sources\sxs MD D:\sources\sxs echo .....Begin To Copy Files..... xcopy ".\sxs" "D:\sources\sxs\" /E/Y

【转】Sqlite 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该...

开发环境: vs2010+.net framework 4.0+ System.Data.SQLite.DLL (2.0)今天在做Sqlite数据库测试,一运行程序在一处方法调用时报出了一个异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了

&lt;VS2010&gt;混合模式程序集是针对“v2.0”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0时,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集 其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据

混合模式程序集是针对&ldquo;v2.0.50727&rdquo;版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

在使用.Net2.0和.Net4.0混合开发,启动应用程序时遇到了"混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集."这个错误提示.解决方案如下: 在app.config中的configuration节内添加子节Startup,详细如下: <startup useLegacyV2RuntimeActivationPolicy="true"> <sup

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集

其调用的方法是从sqlite数据库中获取原来已经使用过的数据库连接,当时也没注意,就是准备设断点然后单步调试,结果竟然是断点无法进入方法体内,后来仔细看了一下方法体的时候发现了一个问题,就是现有的System.Data.Sqlite这个数据访问provider是针对.NET2.0环境开发(最新的版本是1.0.66.0,2010年4月18日发布的),而目前官方也没有给出最新的.NET4的数据访问支持. 既然出现这个问题,那肯定是上GOOGLE搜索解决方案,毕竟微软不可能因为升级到了.NET4.0的

SQLite.dll混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

其他信息: V5.7.4.4 Can't find the System.Data.SQLite.dll more info : 混合模式程序集是针对"v2.0.50727"版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集. 解决办法,web.config 添加