场景

在 目标框架 为 .NET Framework 4 的程序中,引用 目标框架 为 .NET Framework 2.0 的程序集,并使用 .NET Framework 2.0 程序集中的类型或者静态方法。

问题

一般情况下,会报出如下错误

未经处理的异常: System.IO.FileLoadException: 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集。

解决

文档参考

在 .NET Framework 的文档 中 配置文件架构 这一节对上述问题有解决方法。详见 <startup> 元素 中关于 useLegacyV2RuntimeActivationPolicy 特性的描述。

简单来说

当你需要且不得不在 目标框架 为 .NET Framework 4 的程序中,引用 目标框架 为 .NET Framework 2.0 的程序集,那么你应该修改程序配置文件。

一般来说,程序配置文件在项目根目录中,名为 “app.config” 。 默认内容如下:

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

如果你项目中没有的话,可以手动添加,并在 “csproj” 文件中添加一条:

<ItemGroup><None Include="app.config" />
</ItemGroup>

根据 <startup> 元素 中的说法,你需要将“app.config”配置文件修改为:

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

即可在程序中引用目标框架 为 .NET Framework 2.0 的程序集。

发布事项

当程序 Release 之后,在 Release 文件夹中会同时生成 “xxx.exe.config” 文件,此文件就是程序的配置文件。假如你没有使用默认配置,那么在发布时,此文件应随可执行程序一同发布,且保持在同一文件夹中。否则,程序将会使用默认配置。

其他

关于程序的配置文件,更多详细内容可以参阅 .NET Framework 的配置文件架构 。

转载于:https://www.cnblogs.com/chr-wonder/p/8527602.html

在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集相关推荐

  1. 将.net framework 4 部署在docker中的全过程(支持4.0 到 4.8,3.5应该也可以)

    前言: docker自从诞生之初,就是运行在linux系统中,后来windows上也可以运行docker了,但是微软是通过自身的hyper-v技术,在你的windows系统中虚拟出来了一个小的linu ...

  2. 通过 Jena Semantic Web Framework 在 Jave 应用程序中使用 RDF 模型

    http://www.ibm.com/developerworks/cn/java/j-jena/ RDF 越来越被认为是表示和处理半结构化数据的一种极好选择.本文中,Web 开发人员 Philip ...

  3. Jena 简介:通过 Jena Semantic Web Framework 在 Jave 应用程序中使用 RDF 模型

    简介: RDF 越来越被认为是表示和处理半结构化数据的一种极好选择.本文中,Web 开发人员 Philip McCarthy 向您展示了如何使用 Jena Semantic Web Toolkit,以 ...

  4. 通过 Jena Semantic Web Framework 在 Jave 应用程序中使用 RDF 模型 (转)

    RDF 越来越被认为是表示和处理半结构化数据的一种极好选择.本文中,Web 开发人员 Philip McCarthy 向您展示了如何使用 Jena Semantic Web Toolkit,以便在 J ...

  5. 在使用Gradle构建的Spring Boot应用程序中覆盖Spring Framework版本

    如果要使用或仅通过Spring Boot检查Spring的最新版本,但当前的Spring Boot版本取决于旧的Spring版本,则需要稍微调整Gradle构建配置. 例如,在撰写本文时,Spring ...

  6. 在C程序中显示八进制数前缀0和十六进制前缀0x

    我们已经知道在打印变量的时候,要分别使用%d,%o,%x显示十进制.八进制.和十六进制的变量. 如: #include<stdio.h> int main(){int x = 100;pr ...

  7. .NET 2.0应用程序攻击时-安装.NET Runtime之后调试怪异现象

    I've been developing using the Logitech io2 Pen SDK recently and also, coincidentally installed .NET ...

  8. 将终结点图添加到你的ASP.NET Core应用程序中

    在本文中,我将展示如何使用DfaGraphWriter服务在ASP.NET Core 3.0应用程序中可视化你的终结点路由.上面文章我向您演示了如何生成一个有向图(如我上篇文章[译]使用DOT语言和G ...

  9. 在VB应用程序中调用Excel2000

    Visual Basic简称(VB)是设计Windows应用程序强有力的开发工具,"全球绝大多数Windows应用程序都是用VB开发的": Excel是目前使用最广泛的办公应用软件 ...

最新文章

  1. Linux 忘记密码如何登陆—续篇2救援模式
  2. 据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(2)
  3. mysql5.6视频_网易视频云:MySQL 5.6 5.7最优配置文件模板
  4. Flutter:实现红包晃动效果
  5. 早教机器人刷固件_机器人线刷包_机器人刷机包_机器人固件包_机器人救砖包 - 线刷宝ROM中心...
  6. 使用NoSQLUnit测试Spring Data MongoDB应用程序
  7. Android一个漂亮的日历组件源码
  8. 漫步最优化二十二——收敛速率
  9. 外媒:苹果明年上半年推出iPhone SE 3 支持5G搭载A14处理器
  10. java项目飞机大战
  11. cad的php文件怎么用,CAD无法弹出打开、保存等窗口,用FILEDIA解决
  12. 成都VS上海,先锋设计机构与未来建筑的“双城battle”
  13. Centos 安装阿里软件安装源
  14. MES系统是什么?如何搭建一个科学高效的MES报表系统?
  15. DBeaver设置Maven镜像仓库
  16. 计算机查找全部文件,一键找到你电脑中的所有文件
  17. Watering Grass UVA - 10382 贪心
  18. EI检索的国际会议有这些
  19. Cannot construct instance of `com.*` (although at least one Creator exists): cannot deserializ
  20. 小程序传布尔_拥抱和传布禅宗编码

热门文章

  1. Linux之Shell脚本入门
  2. Packet tracer软件安装,模拟网络搭建【Packet tracer安装和使用】
  3. 从源码出发:JAVA中对象的比较
  4. 安装好了java7怎么打开,Windows怎么安装JDK1.7 JDK1.7怎么安装图解
  5. 电液伺服系统_电液伺服系统的误差/偏差以及开环增益
  6. 蓝桥杯 算法提高 递推求值(矩阵快速幂)详解
  7. 华为认证数通专家HCIE-Datacom 11月30日发布
  8. Sentinel Go 0.4.0 发布,支持热点流量防护能力
  9. java 连接linux失败,Jenkins连接Linux失败
  10. mc有什么红石机器人_mc:作为一个mc萌新应该掌握哪些基本功?还需要知道些什么?...