最近在项目上一直使用.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. web.xml中配置log4j

    1.将 commons-logging.jar和 log4j.jar加入你的项目中:2.在src/下创建log4j.properties|log4j.xml文件:3.在web.xml中配置log4j的 ...

  2. DataSnap

    一. DataSnap REST - http://docwiki.embarcadero.com/RADStudio/Berlin/en/DataSnap_REST 1. URI Mapping: ...

  3. Cleaning Shifts(POJ 2376 贪心)

    Cleaning Shifts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15143   Accepted: 3875 ...

  4. Roads in Berland(图论)

    Description There are n cities numbered from 1 to n in Berland. Some of them are connected by two-wa ...

  5. mongodb操作记录

    [User]1.db.addUser("name","pwd","true/false")2.db.auth("name" ...

  6. SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 <第八篇>

    聚集索引.非聚集索引.非聚集唯一索引 我们都知道建立适当的索引能够提高查询速度,优化查询.先说明一下,无论是聚集索引还是非聚集索引都是B树结构. 聚集索引默认与主键相匹配,在设置主键时,SQL Ser ...

  7. SQL Server索引 - 非聚集索引 <第七篇>

    一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向 ...

  8. 几道C语言的题目!

    注:编译环境 VC2010,系统WIN7 64位,其他编译环境和系统未测试   1-1. 编程,输入n,输出如下例(n=5)所示的图形: ***** ***** ***** ***** ***** # ...

  9. Android性能优化典范【转】

    2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App.课程专题不仅仅介绍了Android系统中有关 ...

  10. UESTC_Infected Land 2015 UESTC Training for Search Algorithm & String<Problem G>

    G - Infected Land Time Limit: 6000/3000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others ...