场景

在 目标框架 为 .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. ubuntu16.04下载安装navicate

    1.下载试用版本地址: https://www.navicat.com.cn/download/navicat-premium 2.解压缩 tar -zxvf  /home/rain/download ...

  2. docker:Dockerfile构建LNMP平台

    docker:Dockerfile构建LNMP平台   1.dockerfile介绍  Dockerfile是Docker用来构建镜像的文本文件,包含自定义的指令和格式.可以通过docker buil ...

  3. 【转帖】互联网加密及OpenSSL介绍和简单使用

    转帖:https://mritd.me/2016/07/02/%E4%BA%92%E8%81%94%E7%BD%91%E5%8A%A0%E5%AF%86%E5%8F%8AOpenSSL%E4%BB%8 ...

  4. SAP入行就业

    就大局势来说, 缺乏人最多的模块有abap 还有就是FICO 和MM. 如果您 英语水平特别高的话,建议您学习FICO HR 或BW. 如果您想追求高薪,那就是FICO无疑了.想快速就业或者有编程基础 ...

  5. c#通过反射移除所有事件

    移除全部事件委托 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 3 ...

  6. spark中saveAsTextFile的错误

    写了很简单的一段spark代码,将结果保存为windows本地文件,执行之后总是报错NullPointerException 查询之后 发现是本地缺少hadoop需要的一个文件所致 如果本地已经安装了 ...

  7. springMVC 使用WebApplicationContext获取ApplicationContext对象

    主要用于从application中获取bean 1.applicationContext 在web.xml中使用listener配置 <context-param> <param-n ...

  8. 用java编网页的学习流程,我的一些小心得(初学java到高深运用)

    (1)java基础:首先得会写int,String,for循环,数组,**等等(熟练各种基础的关键字,各种java自带的排序,随即等等算法)什么是封装,继承,多态,然后private,public,p ...

  9. 使用nmon进行系统监控

      一.下载并安装: 下载地址:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download 下载版本:nmon16g_x86.tar.gz 不用的Li ...

  10. EF 更新 删除

    为了避免先查询后更新或删除的问题 可以使用如下语句 Entities db = new Entities(); Orders o = new Orders(); o.id = 6; o.name = ...