.NET4.0下使用Net2.0类库或程序集
最近在项目上一直使用.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 特性的有效值的信息,请参阅“运行时版本”值部分。
|
||
|
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类库或程序集的更多相关文章
- Debian8.3.0下安装Odoo8.0步骤
Debian8.3.0下安装Odoo8.0的方法 假设你已经安装好了Debian 系统,使用root帐号执行如下命令 # apt-get update && apt-get upgra ...
- [VS2015].NET4.0环境下使用.NET2.0程序集,使用sqlite时报异常 出现“混合模式程序集异常”
在.net 4.0环境下使用sqlite时报异常 混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集其调用的方法是从sqli ...
- .NET2.0下的对象生成JSON数据
前言:今天研究了下在.NET2.0环境下开发Ajax程序经常用到的一个数据类型JSON, 一.什么是JSON? 自己也写不了句子不是很专业,下面是百度百科的关于JSON的介绍: JSON(JavaSc ...
- 在VC6.0下如何调用Delphi5.0开发的进程内COM
因为本人的语言水平很差,考大学时150的总分,我考了个60分.外语也是,初中及格过一次,会考及格过一次.其它的时间好像从没有及格过.所以我不写文章,因我一百字的文章给我写,至少要出八九个错别字.哈哈… ...
- iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情
想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...
- 在.net2.0下使用System.Web.Script.Serialization;
最近,在弄json字符串转为对象.需要添加这个引用System.Web.Script.Serialization;因为版本必须是dotnet2.0的原因,发现很多解决方案不适合自己.故使用这种解决办法 ...
- .NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 (在IIS7.5中的设备办法)
.NET4.0下网站应用法度用UrlRewriter.dll重写无后缀路径 在IIS中新建网站(端标语8111) 直接运行http://localhost:8111/ 设备办法: 二.添加通配符脚本映 ...
- IE10-IE11在NET4.0下出现“__doPostBack未定义”解决方案
IE10在NET4.0下出现"__doPostBack未定义"的办法 参考文章: http://blogs.msdn.com/b/scott_hanselman/archive/2 ...
- Asp.Net2.0下C#环境 Login控件实现用户登录
原文:Asp.Net2.0下C#环境 Login控件实现用户登录 一.前台显示效果 二.前台代码 <asp:Login ID="Login1" run ...
随机推荐
- 超级密码(dfs)
超级密码233 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- POJ 1564 Sum It Up(DFS)
Sum It Up Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- 在Cocos2d-X中新建Android项目
Windows下创建Cocos2d-X的Android项目并不复杂,关键是要改几个环境变量 一.进入Cocos2d-X主目录修改“create-android-project.bat” 大家都知道要点 ...
- js加载优化三
Javascript性能优化之异步加载和执行 Author:小欧2013-09-17 随着科技的发展,如今的网站和五六年前相比,现在的人们对web的要求越来越高了,用户体验,交互效果,视觉效果等等都有 ...
- List<T>类
List<T>类是ArrayList的泛型等效版本,两者功能相似.它实现了6个接口,实际上市对应的3对. 1.IEnumerable<T>和IEnumerable 2.ICol ...
- VS2008生成的程序无法在其它电脑上运行,提示系统无法执行指定的程序
经过一番查找,最给力的参考是 http://www.cnblogs.com/visoeclipse/archive/2010/02/27/1674866.html ------------------ ...
- 电机转矩T=9550*P/N推导。
很奇怪,这个公式怎么来的,原来好多是基础物理的,也许我们初中高中物理书上多有,基础真的是很基础的基础. P=F*V (1) ,即功率=力*速度 T=F*R (2) ,即力矩=力*作用长度 ,在电机里 ...
- 算法(Algorithm)是什么?
我们用煎蛋来打个比方.煎蛋的一般步骤是: 1.>取煎锅. 2.>取油. ->我们有油吗? ****有,把油倒入煎锅. ****没有,我们要去买油吗? #########要买,出去买油 ...
- 剑指offer-面试题21.包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数. 在该栈中,调用min,push及pop的时间复杂度都是O(1). 这一题实际上需要一个辅助栈存储最小值: 1.在模板类定 ...
- error C2440
error C2440: "初始化": 无法从"std::_List_const_iterator<std::_List_val<std::_List_sim ...
注意