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

今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常:

 

混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.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

<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运行时来运行程序。

 

 

 

有关更多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-09-20 00:10:50

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

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

原文 http://www.cnblogs.com/zcftech/archive/2013/03/22/2976385.html   看到一个kinect大牛编写的一个水果忍者的体感游戏版本,让我为自己一直以来只用现有的网页游戏来模拟kinect体感游戏控制感到惭愧,没办法,我还是菜鸟.学习一段后自己模仿星际大战这个游戏,自己写了一个模仿版(对这个游戏我想大家是不陌生的),但是当我开始添加有关kinect控制代码时,突然系统报错"混合模式程序集是针对"v1.1.4322"版

支持多语言、多用户、多数据库、完美URL之路过秋天版博客 V1.0正式版 发布[含详细部署安装说明]

2010年11月8日,由于网友的期待,勿勿发布了 支持多语言.多用户.多数据库.完美URL之路过秋天版博客发布[绝对有杀伤力的博客] 在发布的当天,有相当多的网友很给力,对在线演示版本其进行了相当程度的测试,犹其是针对安全性的测试更是卯足了劲, 于是不少很明显的漏洞及bug便轻易浮出了水面,为了防止其它用户也能正常访问, 于是采取时即修正更新的方式,一边修正一边测试了......一直进行了约2天的时间......   2010年11月10日,在针对安全问题及少数问题其它问题进行修正趋于稳定之后:

.NET 2.0正式版中无刷新页面的开发

刷新|无刷新|页面 在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动.而且在越来越多的 Ajax 开发包被开发出来的情况下, ASP.NET2.0 自带的无刷新页面技术没有被很多人了解,甚至不少人认为该功能有些"鸡肋".但如果我们仅仅是在程序中加入很少部分的 Ajax 特性, Atlas . Ajax.Net 等就显得有些"杀鸡用牛刀"的感觉了.而且,我认为使用 ASP.NET2.0 提供的方法进行开发并不很复杂,相反,使用很

微信6.0 Android版也发布了

摘要: 站了Android这一队很残忍,这意味着昨天朋友圈的小视频你激动点进去它告诉你剧透到此为止,还好今天微信6.0 Android版也发布了. 大致跟iOS版本一样啦,下拉微信主屏幕就会出现一粒大 站了Android这一队很残忍,这意味着昨天朋友圈的小视频你激动点进去它告诉你"剧透到此为止",还好今天微信6.0 Android版也发布了. 大致跟iOS版本一样啦,下拉微信主屏幕就会出现一粒大眼睛,拉来下就是取景框,长按拍摄,不过没有像Vine那样的延时拍摄功能,得一步到位,很考验选

腾讯应用宝国庆期间独家首发微信6.0安卓版 可发小视频

9月30日,微信6.0的IOS版正式在苹果APP Store上线.这是微信推出以来又一次重大更新,今后,在使用微信聊天及朋友圈时,不仅可以发文字.语音还将可以发送"小视频".毫无疑问,微信这次更新将再一次改变6亿用户的沟通习惯,用更加丰富.多彩和立体的影像,取代传统文字和语音沟通的黑白世界. 记者独家获悉,这一次安卓机用户不用等待很久,微信6.0安卓版将于国庆期间在腾讯应用宝独家首发.在微信6.0版核心的"小视频"功能中,用户可在聊天界面以及朋友圈拍摄一段不超过8秒

今天微信6.0 Android版发布了

摘要: 站了Android这一队很残忍,这意味着昨天朋友圈的小视频你激动点进去它告诉你剧透到此为止,还好今天微信6.0 Android版也发布了. 大致跟iOS版本一样啦,下拉微信主屏幕就会出现一粒大 站了Android这一队很残忍,这意味着昨天朋友圈的小视频你激动点进去它告诉你"剧透到此为止",还好今天微信6.0 Android版也发布了. 大致跟iOS版本一样啦,下拉微信主屏幕就会出现一粒大眼睛,拉来下就是取景框,长按拍摄,不过没有像Vine那样的延时拍摄功能,得一步到位,很考验选

在什么情况下“100-1=0”?

在什么情况下"100-1=0"? 这不是脑筋急转弯,不要告诉我"在算错的情况下等于零". 这是一个经典的产品质量的等式,源自日本经营之神松下幸之助所曾说过的一句名言:"对于产品质量来说,不是100分就是0分". 其含义在于,在100件产品中,如果有1件不合格,那么产品的质量并不会成为99,而是之前所有的努力都有可能化为泡影,即"100-1=0". 对于一些无伤大雅的消费品,我们通常都不会表现得太过苛刻,"差不多&qu

在redhat Linux9下安装Oracle9.2.0的一点经验

oracle 这个也是我曾经写在大富翁论坛上的笔记,今天也一并转贴一下:http://www.delphibbs.com/keylife/iblog_show.asp?xid=6526 如下:--- 在redhat Linux9下安装Oracle9.2.0的一点经验 作者:jrq 摘要:简述在redhat Linux9环境下安装Oracle9.2.0数据库的过程. 关键字:Oracle9i  redhat Linux9  内核参数  环境变量       一直是在redhat Linux7.1环

iOS学习之Objective-C 2.0 运行时系统编程

0 导言 本主主要内容包括: 1.概述 2.参考 3.运行时系统的版本和平台 4.和运行时系统的交互 5.消息 6.动态方法解析 7.消息转发 8.类型编码 9.属性声明 1 概述 Objective-C语言将决定尽可能的从编译和链接时推迟到运行时.只要有可能,Objective-C总是使用动态的方式来解决问题.这意味着Objective-C语言不仅需要一个编译器,同时也需要一个运行时系统来执行编译好的代码.这里的运行时系统扮演的角色类似于 Objective-C语言的操作系统,Objectiv