最近在项目上一直使用.net4.0 framework,使用ffmepeg下的一个dll时,提示只能在2.0下运行,解决方法如下:

app.config中添加一个配置节:startup

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

在.NET2.0 framework,.NET3.5 framework的时候,由于程序运行环境本质还是.NET2.0,而到了.NET4.0由于整个程序集的版本更新,以前使用.NET2.0所编写的程序集与.NET4.0的程序集互操作的时候就会出现兼容性问题。

通过MSDN,我们可以知道,startup配置节中的useLegacyV2RuntimeActivationPolicy属性是在.NET4.0中新增的,默认是false,表示:使用默认的 .NET Framework 4 激活策略,该激活策略将加载 .NET Framework 4.0,通过使用公共语言运行时 (CLR) 版本 4.0 所创建的程序集,以及 CLR 早期版本通过使用受支持的低于版本 4.0 的最高 CLR 版本所创建的程序集。

现在如果当程序在.NET4.0环境下要使用.NET2.0或.NET3.5及以下的程序集时就必须将useLegacyV2RuntimeActivationPolicy设置为true,同时还要注意,需要在startup配置节的字节中添加supportedRuntime配置节,并指定为"v4.0",表示使用.NET4.0运行时来运行程序。

<supportedRuntime> 元素

指定应用程序支持的公共语言运行时版本。 此元素应由用 .NET Framework 1.1 版或更高版本生成的所有应用程序使用。

<supportedRuntime version="runtime version" sku="sku id"/>

 

特性

描述

version

可选特性。

一个字符串值,它指定此应用程序支持的公共语言运行时 (CLR) 版本。 有关 version 特性的有效值的信息,请参阅“运行时版本”值部分。

注意

通过 .NET Framework 3.5,“运行时版本”值的形式为主版本号.次版本号.内部版本号。 从 .NET Framework 4 开始,仅主版本号和次版本号是必需的(即“v4.0”而不是“v4.0.30319”)。 建议使用较短字符串。

sku

可选特性。

一个字符串值,该值指定库存单位 (SKU),库存单位则指定此应用程序支持的 .NET Framework 版本。

从 .NET Framework 4.0 起,建议使用 sku 特性。  若存在该特性,则它指示应用面向的 .NET Framework 版本。

有关 SKU 特性的有效值的信息,请参阅 “SKU ID”值 部分。

 

如果应用程序配置文件中没有 <supportedRuntime> 元素,则使用用于生成应用程序的运行时版本。

< supportedRuntime> 元素应由使用运行时 1.1 版或更高版本生成的所有应用程序使用。 仅为支持运行时 1.0 版而生成的应用程序必须使用 <requiredRuntime> 元素。

注意

如果使用 CorBindToRuntimeByCfg 函数来指定配置文件,则必须使用适用于所有运行时版本的 <requiredRuntime> 元素。 当你使用 CorBindToRuntimeByCfg 时,<supportedRuntime> 元素将被忽略。

对于支持从 .NET Framework 1.1 到 3.5 的运行时版本的应用,支持多个运行时版本时,第一个元素应指定优先级最高的版本,最后一个元素应指定优先级最低的版本。 对于支持 .NET Framework 4.0 或更高版本的应用,version 特性指示普遍适用于 .NET Framework 4 及更高版本的 CLR 版本,而 sku 特性指示应用所面向的单个 .NET Framework 版本。

注意

如果你的应用程序使用旧式激活路径(如 CorBindToRuntimeEx 函数),并且你希望这些路径激活 CLR 的版本 4(而不是较早的版本),或者你的应用程序是用 .NET Framework 4 生成的,但在使用较早版本的 .NET Framework 生成的混合模式程序集上有依赖项,则不足以在受支持的运行时列表中指定 .NET Framework 4。 此外,在配置文件的 <startup> 元素中,必须将 useLegacyV2RuntimeActivationPolicy 特性设置为 true。 但是,将此特性设置为 true 意味着,用 .NET Framework 早期版本生成的所有组件都使用 .NET Framework 4(而不是生成它们时所用的运行时)运行。

建议使用应用程序可在其上运行的所有 .NET Framework 版本来测试这些应用程序。


下表列出了version特性的运行时版本值的有效值。

.NET Framework 版本

version 特性

1.0

"v1.0.3705"

1.1

"v1.1.4322"

2.0

"v2.0.50727"

3.0

"v2.0.50727"

3.5

"v2.0.50727"

4.0

"v4.0"

4.5

"v4.0"

4.5.1

"v4.0"

4.5.2

"v4.0"

4.6

"v4.0"

4.6.1

"v4.0"


下表列出 sku 特性支持的 .NET Framework 版本(自 .NET Framework 4 起)。  请注意,自 .NET Framework 4 开始的 sku 特性指示应用面向的 .NET Framework 版本。

.NET Framework 版本

sku 特性

4.0

".NETFramework,Version=v4.0"

4.0,客户端配置文件

".NETFramework,Version=v4.0,Profile=Client"

4.0,平台更新 1

.NETFramework,Version=v4.0.1

4.0,客户端配置文件,Update 1

.NETFramework,Version=v4.0.1,Profile=Client

4.0,平台更新 2

.NETFramework,Version=v4.0.2

4.0,客户端配置文件,Update 2

.NETFramework,Version=v4.0.2,Profile=Client

4.0,平台更新 3

.NETFramework,Version=v4.0.3

4.0,客户端配置文件,Update 3

.NETFramework,Version=v4.0.3,Profile=Client

4.5

".NETFramework,Version=v4.5"

4.5.1

".NETFramework,Version=v4.5"

4.5.2

".NETFramework,Version=v4.5"

4.6

".NETFramework,Version=v4.5"

4.6.1

".NETFramework,Version=v4.5"

下表显示对于不同的 sku 特性值,当 version 特性为 v4.0 且 sku 特性标识 .NET Framework 4 或它的一个平台更新 (PU) 时,应用程序将在安装的哪一个 .NET Framework 4 版本上运行。

sku 特性的值

4.0 Client

4.0 Full

4.0 Client + PU 1

4.0 Full + PU 1

4.0 Client + PU 2

4.0 Full + PU 2

4.0 Client + PU 3

4.0 Full + PU 3

4.5 和更高版本

.NETFramework,Version=v4.0,Profile=Client

.NETFramework,Version=v4.0

 

 

 

 

.NETFramework,Version=v4.0.1,Profile=Client

   

.NETFramework,Version=v4.0.1

     

 

 

.NETFramework,Version=v4.0.2,Profile=Client

       

.NETFramework,Version=v4.0.2

         

 

.NETFramework,Version=v4.0.3,Profile=Client

           

.NETFramework,Version=v4.0.3

             

示例

下面的示例演示如何在配置文件中指定支持的运行时版本。 配置文件指示应用面向 .NET Framework 4.6。

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

此元素可用于应用程序配置文件中。

.NET4.0下使用Net2.0类库或程序集的更多相关文章

  1. Debian8.3.0下安装Odoo8.0步骤

    Debian8.3.0下安装Odoo8.0的方法 假设你已经安装好了Debian 系统,使用root帐号执行如下命令 # apt-get update && apt-get upgra ...

  2. [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”

    在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...

  3. .NET2.0下的对象生成JSON数据

    前言:今天研究了下在.NET2.0环境下开发Ajax程序经常用到的一个数据类型JSON, 一.什么是JSON? 自己也写不了句子不是很专业,下面是百度百科的关于JSON的介绍: JSON(JavaSc ...

  4. 在VC6.0下如何调用Delphi5.0开发的进程内COM

    因为本人的语言水平很差,考大学时150的总分,我考了个60分.外语也是,初中及格过一次,会考及格过一次.其它的时间好像从没有及格过.所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字.哈哈… ...

  5. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情

    想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...

  6. 在.net2.0下使用System.Web.Script.Serialization;

    最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...

  7. .NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的设备办法)

    .NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 在IIS中新建网站(端标语8111) 直接运行http://localhost:8111/ 设备办法: 二.添加通配符脚本映 ...

  8. IE10-IE11在NET4.0下出现“__doPostBack未定义”解决方案

    IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2 ...

  9. Asp.Net2.0下C#环境 Login控件实现用户登录

    原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码             <asp:Login ID="Login1" run ...

随机推荐

  1. mysql 关键字bug

    今天运行语句 select * from order; 出现bug: ERROR 1064 (42000): You have an error in your SQL syntax; check t ...

  2. WordPress教程之判断文章所属分类函数in_category、is_category

    最近自己在修改一个采用Wordpress程序的博客的时候需要用到一个特殊的功能:我需要判断这篇文章是属于哪些分类,如果属于我设定的分类下的文章,则输出一个DIV内容.按道理说实现这个功能应该不算太难, ...

  3. 夏宇闻教授谈FPGA工程师的入门学习

    1. 必须清楚自己究竟适合不适合做工程师. 看看自己的性格特点,是不是特别安静,又耐得住寂寞.因为FPGA工程师是一个辛苦的工作,不但要通过不断学习研究提升自己的设计水平,还要经常性的熬夜加班敲写代码 ...

  4. WPF MultiBinding后台绑定动态属性 属性改变不调用Convert的问题

    一开始的写法: MultiBinding mb = new MultiBinding(); Binding b1 = new Binding(); b1.ElementName = "tex ...

  5. 【在Windows下进行的编程人员,你真的需要学习下Linux】

    从业几年,发现好多编程人员,严重依赖UI工具.对一些命令操作,十分的反感.尤其是从事Windows系统中的程序开发的人员.由于微软对开发工具,编程套件的极限优化.开发出更多的 面向UI的开发工具.从V ...

  6. tk资料

    Hello World: 让我们开始,作为其他教程的开始, 以"Hello World"程序创建一个文件 叫做Hello.pl  键入下面的内容到它这里: #!/usr/local ...

  7. python连续爬取多个网页的图片分别保存到不同的文件夹

      python连续爬取多个网页的图片分别保存到不同的文件夹 作者:vpoet mail:vpoet_sir@163.com #coding:utf-8 import urllib import ur ...

  8. MySQL数据库如何解决大数据量存储问题

    利用MySQL数据库如何解决大数据量存储问题? 各位高手您们好,我最近接手公司里一个比较棘手的问题,关于如何利用MySQL存储大数据量的问题,主要是数据库中的两张历史数据表,一张模拟量历史数据和一张开 ...

  9. Python常用模块 (2) (loging、configparser、json、pickle、subprocess)

    logging 简单应用 将日志打印到屏幕 import logging logging.debug('debug message') logging.info('info message') log ...

  10. wxPython Major类

    转载自:http://www.yiibai.com/wxpython/wxpython_major_classes.html   原始的 wxWidgets(用C++编写)是一个巨大的类库.GUI类从 ...