[VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
来源:互联网 发布:centos7安装内核源码 编辑:程序博客网 时间:2024/03/28 17:16
转自:http://www.cnblogs.com/kyo-yo/archive/2010/08/19/VS2010-Use-NET2-In-NET4.html
今天在把以前写的代码生成工具从原来的.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
123<
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://kyo-yo.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
- [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
- [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
- [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
- NET4.0环境下兼容.NET2.0程序集,出现异常处理办法
- C# .NET4.0 混合模式程序集异常
- C# .NET4.0 混合模式程序集异常
- 在.NET4.0下运行.NET2.0程序集
- .NET4.0下使用Net2.0类库或程序集
- 解决混合模式程序集在VS2010 .net 4.0 环境下调试出错的方法。
- 混合模式程序集异常
- 如果你在VS2010下使用.net 4.0开发具有混合模式程序集的项目
- vs2010环境下调试程序出现0xc000007b问题
- 只安装.net4.0运行.net2.0程序兼容问题
- 如何在NET4.0的程序中使用NET2.0的代码
- vs2010在win7下打包.net2.0框架的程序
- 从.Net4 降到 .Net2.0 出现的问题
- win98下运行NET2。0程序
- VS2010 混合模式程序集是针对"v1.1.4322"版的运行时生成的 在没有配置其他信息的情况下 无法再4.0运行中
- 解决安装软件时的/usr/local/lib/libz.a(compress.o)错误
- grep用法详解:grep与正则表达式
- CGI编程入门--GET与POST示例
- EL表达式截取字符串
- 图像处理库OpenCV参考网址
- [VS2010].NET4.0环境下使用.NET2.0程序集,出现“混合模式程序集异常”
- jxl简介,jxl操作excel 创建,读取,修改。
- JAVA学习笔记(2)基本数据类型和基本操作
- fs.FSInputChecker: Found checksum error
- public、protected和private访问权限以及继承问题
- 3d旋转幻灯片分析与设计
- GPIO驱动程序的移植
- JNDI教程
- android中用Spannable在TextView中设置超链接、颜色、字体