场景

在 目标框架 为 .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 的配置文件架构

在 .NET Framework 4.0 的程序中使用 .NET Framework 2.0 的程序集的更多相关文章

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

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

  2. asp.net 4.0+ webform 程序中集成mvc4混合应用

    vs2015之后新建web站点可以很轻松的搭建mvc与webform的混合应用,vs2012下其实也可以通过简单的几部也可以实现,具体如下: 1.新建packages.config文件,里面加上必要的 ...

  3. 程序中为什么会使用while(0)

    https://blog.csdn.net/u012062760/article/details/46446207 关于while(0)实际上是用来宏定义的,这样的宏定义可以避免调用的时候出错. 如下 ...

  4. 将内存ffff:0~ffff:b中的数据拷贝到0:200~0:20b中

    我是按照字,也就是2个字节拷贝的. 这样就可以让循环减半== assume cs:sad sad segment start: mov ax, 0ffffh mov ds, ax mov bx, 0h ...

  5. 【译】使用 WebView2 将最好的 Web 带到 .NET 桌面应用程序中

    在去年的 Build 大会上,我们引入了 WebView2,这是一个浏览器控件,可以用新的基于 Chrome 的 Microsoft Edge 来呈现 Web 内容(HTML / CSS / Java ...

  6. 学习Shell脚本编程(第3期)_在Shell程序中使用的参数

    位置参数 内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 3.1 位置参数 由系统提供的参数称为位置参数.位 ...

  7. Web2.0应用程序的7条原则

    个人看好Web的发展潜力,本文字摘自<Collective Intelligence 实战> 网络是平台 使用传统许可模式软件的公司或用户必须运行软件.定期更新至最新版本,以及扩展它来满足 ...

  8. 3、在Shell程序中使用的参数

    学习目标位置参数内部参数 如同ls命令可以接受目录等作为它的参数一样,在Shell编程时同样可以使用参数.Shell程序中的参数分为位置参数和内部参数等. 12-3-1 位置参数由系统提供的参数称为位 ...

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

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

随机推荐

  1. Aop事务小结(事务管理器和自身构建)

    声明市事务是利用AOP来实现的. 1.采用事务管理器AOP: <!--3.配置事务切面:控制住连接池 --> <bean id="transactionManager&qu ...

  2. 基础-Math.floor与parseInt区别

    Math.floor只能对一个数向下取整,不能解析字符串 如: Math.floor(1.5) // 1 Math.floor(-2.1) // -3 Math.floor("3" ...

  3. ASP.NET MVC4学习笔记

    一.MVC简介

  4. [转帖] testin 安全测试要点

  5. [转帖] 数据库用优化方案 https://segmentfault.com/a/1190000006158186

    Mysql大表优化方案     当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部 ...

  6. ionic3应用的Android打包签名发布步骤

    版权声明:本文为博主原创文章,未经博主允许不得转载. 当我们的ionic应用开发结束之后,就要开始上线到应用市场,那么Android的发布步骤具体是怎么样的呢? 1)编译 运行命令行: ionic c ...

  7. mysql登录密码相关

    设置root登录密码 方法一:用root 进入mysql后 mysql>set password =password('你的密码'); mysql>flush privileges; 方法 ...

  8. BZOJ4808马——二分图最大独立集

    题目描述 众所周知,马后炮是中国象棋中很厉害的一招必杀技."马走日字".本来,如果在要去的方向有别的棋子挡住(俗 称"蹩马腿"),则不允许走过去.为了简化问题, ...

  9. BZOJ2008 JSOI2010连通数(floyd+bitset)

    一直不明白为什么要用floyd求传递闭包,直接搜不是更快嘛……不过其实可以用bitset优化,方法也比较显然.bitset是真的神奇啊,好多01状态且转移相似的东西都可以用这个优化一下. #inclu ...

  10. AOP 获取 RequestContextHolder

    转载: http://blog.csdn.net/lexang1/article/details/52619215 在使用spring时,经常需要在普通类中获取session,request等对像. ...