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

简介: 今天在把以前写的代码生成工具从原来的.NET3.5升级到.NET4.0,同时准备进一步完善,将程序集都更新后,一运行程序在一处方法调用时报出了一个异常:   混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.

今天在把以前写的代码生成工具从原来的.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

目录
相关文章
|
5月前
|
移动开发 Dart 前端开发
【HarmonyOS 5】鸿蒙跨平台开发方案详解(二)
作为最早实现鸿蒙适配的跨平台框架,Flutter在社区推动下已形成较完整的技术方案。当前鸿蒙版Flutter已发布3.22.0-ohos版本,该版本基于Flutter 3.22.0核心。
410 0
|
消息中间件 XML 网络协议
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
📣读完这篇文章里你能收获到 - Nlog输出至文件/RabbitMQ/远程网络Tcp配置文档 - Nlog配置参数详解 - .NET CORE项目接入
6326 0
『NLog』.Net使用NLog使用方式及详细配置(输出至文件/RabbitMQ/远程网络Tcp)
|
算法 JavaScript 前端开发
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(三)
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM
3916 1
开源项目推荐:CNC+CRC/SoftPLC/OpenCASCADE/CAD/CAM(三)
|
8月前
|
存储 安全 开发者
《探秘鸿蒙原生应用:分布式软总线如何开启跨设备协同新时代》
鸿蒙原生应用通过分布式软总线技术实现跨设备协同,带来便捷智能体验。该技术作为核心纽带,统一通信机制,整合多设备资源,支持自动发现连接、高效数据传输与设备抽象管理。实际应用场景涵盖多屏协同办公、智能家居控制及游戏跨设备对战等,极大提升生活与工作效率。尽管面临复杂环境稳定性及资源优化配置等挑战,未来分布式软总线将加速连接速度、强化安全性并优化资源管理,推动万物互联的智能生活发展。
452 0
|
11月前
|
IDE 程序员 API
一文彻底拿捏DevEco Studio的使用小技巧
本文介绍了DevEco Studio的安装与使用,包括其特性、常用快捷键、设置中文环境和文件注释模板等内容。DevEco Studio是华为为HarmonyOS开发者提供的集成开发环境(IDE),最新版本5.0.0增加了多项功能,如工程外模块代码支持、构建字节码har包等,极大提升了开发效率。通过简单步骤即可完成安装,并能轻松查阅组件API文档。跟随程序员Feri一起快速掌握鸿蒙开发!
1341 78
|
缓存
解决LabVIEW通过OPC Server读取PLC地址时的错误180121602
解决LabVIEW通过OPC Server读取PLC地址时的错误180121602
295 0
|
Windows
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
​史上最详细的Windows10系统离线安装.NET Framework 3.5的方法(附离线安装包下载)
9276 0
|
SQL 数据库
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
【SQL】已解决:SQL错误(208):对象名‘STRING_SPLIT‘无效
1702 0
|
算法 数据可视化 C#
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。
679 0
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
vs2022配置Qt6
vs2022配置Qt6
625 1