.net 4.5兼容4.0?

黑娃 2016-07-05 01:08:01
我一直以为.net各个版本都是独立的,用4.5写的程序,不能在只装了4.0的机器上跑,反之亦然。但是今天写了个4.0的dll,4.5的主程序,主程序调用dll时我以为对4.0和4.5都有需求,于是拿到一些机器上去试验,结果如下:
1、像xp这样无法装4.5只装了4.0的,显然启动不了主程序
2、像win7这样只装了4.0没有装4.5的,还是启动不了主程序
3、然后我在装了4.0的win7上又装了个4.5.1,当然可以正常运行程序了
4、但是装完4.5.1之后我发现原来的4.0已经没有了(控制面板上看不到之前有的4.0了)
5、于是我怀疑安装4.5.1是把4.0给覆盖了
难道4.5X系列对4.0是向下兼容的?我晕了,貌似以前也见过控制面板里面同时出现了4.0和4.5
...全文
2362 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑娃 2016-07-06
  • 打赏
  • 举报
回复
https://msdn.microsoft.com/zh-cn/library/bb822049.aspx 这事官方的说法,终于搞清楚了。简单总结一下: .NET从2.0到4.6各版本不是完全兼容的,从4.0分界,各自兼容,例如4.5兼容4.0但不兼容3.5;3.5兼容2.0,3.0,原因是2.0-3.5基于CLR2,4.0及以上基于CLR4 仅装了4.0的机器不能运行4.5的程序,很容易理解 仅装了4.5的机器可以运行4.0的程序,甚至是一个4.5的主程序调用4.0的dll,都只需要装一个4.5搞定,因为兼容了 仅装了4.5的机器可能不能运行3.5的程序,我没试验过,只是理解应该这样
fungchou 2016-07-06
  • 打赏
  • 举报
回复
引用
.NET Framework 4.5 是一个针对 .NET Framework 4 的高度兼容的就地更新。
引用
虽然此版本的 .NET Framework 可与 .NET Framework 3.5 和更早的版本并行运行,但执行的是针对 .NET Framework 4 的就地升级。
https://www.microsoft.com/zh-cn/download/details.aspx?id=30653 所以,4.5对于4.0是替代关系,不能并行存在。
黑娃 2016-07-06
  • 打赏
  • 举报
回复
引用 7 楼 duanzi_peng 的回复:
。net framework 版本都是向下兼容的,这个没有疑问。
你这话可能不对,我现在理解的是4.0是一个分界点,如果需要3.5的程序在只装了4.0的机器上不能运行,不过我还没验证,这篇博客说得似乎比较清楚 http://blog.csdn.net/dijkstar/article/details/30971523
lshfong 2016-07-06
  • 打赏
  • 举报
回复
你编译的时候选4.0版本就可以了
exception92 2016-07-06
  • 打赏
  • 举报
回复
引用 12 楼 falcomavin 的回复:
https://msdn.microsoft.com/zh-cn/library/bb822049.aspx 这事官方的说法,终于搞清楚了。简单总结一下: .NET从2.0到4.6各版本不是完全兼容的,从4.0分界,各自兼容,例如4.5兼容4.0但不兼容3.5;3.5兼容2.0,3.0,原因是2.0-3.5基于CLR2,4.0及以上基于CLR4 仅装了4.0的机器不能运行4.5的程序,很容易理解 仅装了4.5的机器可以运行4.0的程序,甚至是一个4.5的主程序调用4.0的dll,都只需要装一个4.5搞定,因为兼容了 仅装了4.5的机器可能不能运行3.5的程序,我没试验过,只是理解应该这样
学习了。
南天空 2016-07-05
  • 打赏
  • 举报
回复
以我的实际使用经验来看,是兼容的。一般4.0下开发的程序在4.5环境下是可以正常运行的。反过来不行。通常安装完4.5后,我一般不再安装4.0,也安装不了,因为会提示有更新版本,不用安装。
exception92 2016-07-05
  • 打赏
  • 举报
回复
。net framework 版本都是向下兼容的,这个没有疑问。
我叫小菜菜 2016-07-05
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  <appSettings>
    <!--<add key="timeout" value="30" />-->
  </appSettings>
</configuration>
试试这个
圣殿骑士18 2016-07-05
  • 打赏
  • 举报
回复
弄清楚以下问题: 1、向前兼容而不能向后兼容 2、.net库版本和核心库版本间的关系
Poopaye 2016-07-05
  • 打赏
  • 举报
回复
引用 2 楼 falcomavin 的回复:
我刚才又试了一下,dll为3.5,主程序为4.0,然后再一台装有2.0,3.5,4.5的机器上可以运行,接着我把3.5卸了依然能运行,为什么?dll不是3.5吗
要看你引用的dll是不是3.5特有的,毕竟核心库只有2.0和4.0两种 一般dll在c:\windows\assembly和c:\windows\Microsoft.NET\assembly里面,你可以确认下
姓小名白丶 2016-07-05
  • 打赏
  • 举报
回复
应该是兼容的啊 4.5的版本高于4.0 理论上是兼容4.0的
黑娃 2016-07-05
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
4.5.1 红色是大版本 蓝色是小版本 一般来说大版本不变的话,其核心是相同的 而Frame版本变动最大的几个版本是 1.1~2.0,设计什么的大变,一般升级都会出现各种错误 2.0~3.5其实底层都是同一个版本,都是2.x版本 3.5~4.0底层有重写,但语法、用法什么的与前面的版本没啥区别,就算有,也是细小的区别 4.0~4.5底层是同一个版本,比较特殊的是4.5.1,它是换了编译器…… 如果目前所有的Frame你都有装过的话,那你在IIS的程序池里面就会有四个选项,1.1版本,2.0版本,4.0版本,无托管
我刚才又试了一下,dll为3.5,主程序为4.0,然后再一台装有2.0,3.5,4.5的机器上可以运行,接着我把3.5卸了依然能运行,为什么?dll不是3.5吗
  • 打赏
  • 举报
回复
4.5.1 红色是大版本 蓝色是小版本 一般来说大版本不变的话,其核心是相同的 而Frame版本变动最大的几个版本是 1.1~2.0,设计什么的大变,一般升级都会出现各种错误 2.0~3.5其实底层都是同一个版本,都是2.x版本 3.5~4.0底层有重写,但语法、用法什么的与前面的版本没啥区别,就算有,也是细小的区别 4.0~4.5底层是同一个版本,比较特殊的是4.5.1,它是换了编译器…… 如果目前所有的Frame你都有装过的话,那你在IIS的程序池里面就会有四个选项,1.1版本,2.0版本,4.0版本,无托管

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧