最近在项目上一直使用.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. 解决图片元素下多余空白的BUG

    1.将图片转换为块级对象     即,设置img为“display:block;”.在本例中添加一组CSS代码:“#sub img {display:block;}”. 2.设置图片的垂直对齐方式  ...

  2. 为编写网络爬虫程序安装Python3.5

    1. 下载Python3.5.1安装包1.1 进入python官网,点击menu->downloads,网址:https://www.python.org/downloads/ 1.2 根据系统 ...

  3. dreamweaver批量去除空格,空行

    制作网店的时候,发现有空行,或者空格.如果数量比较少,可以手动清除.如果多的话,可以使用dreamweaver批量去除.方法如下: 第一步,用正则表达式删除所有空白行(其实这一步不一定要做,我只是为了 ...

  4. knockout.js简单实用教程1

    第一次接触knockout是在一年多之前吧.当时是接手了一个别人的项目,在项目中有用到knockout来进行数据的绑定.也就开始学习起来knockout.在之后的项目中也多次用到了这个.在第一次开始学 ...

  5. C++之------回调函数

    一:What?(什么是回调函数) 回调函数图文讲解 谓回调,就是客户程序C调用服务程序S中的某个函数A,然后S又在某个时候反过来调用C中的某个函数B,对于C来说,这个B便叫做回调函数. 例如Win32 ...

  6. unzip解压中文文件名乱码

    由于中文的Windows使用的是GBK编码,而Linux默认使用UTF-8编码的,如果在Windows打包带中文文件的zip包,则这个zip包在Linux下面使用默认的归档管理器打开这个zip包的时候 ...

  7. j2ee概览

    J2EE诞生的背景是什么?Java 2平台企业版,也就是J2EE,定义了开发多层企业应用程序的标准.它的诞生并不是偶然的,它是在各种条件积累成熟之下的产物.原因之一:java语言的巨大成功.1994年 ...

  8. hadoop1.2.1+hbase0.90.4+nutch2.2.1+elasticsearch0.90.5配置(伪分布式)

    系统:ubuntu14.04 一.hadoop安装 ssh免密码登陆详情见上一篇博客. 解压hadoop1.2.1到某个目录下,这里解压到ubuntu下载目录下(注意没必要使用管理员权限) 在hado ...

  9. 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活

    图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) by zhangxinxu from http://www.zhangxinxu.com 本 ...

  10. RIAidea – Focus on Flash/Flex/AIR » About Me

    RIAidea – Focus on Flash/Flex/AIR » About Me Browse > Home > About Me Tuesday, May 20, 2014 | ...