完全理解.NET版本和向后兼容性

时间:2012-12-17 13:55:12

标签: .net .net-2.0 clr

我有一个.NET 2.0应用程序,我计划制作一个“智能安装程序”,用于检查用户PC上的可用.NET版本并为其安装我的特定端口。 我看到了:

  • Windows XP(SP2)附带.NET 2.0
  • Windows Vista附带.NET 3.0
  • Windows 7附带.NET 3.5
  • Windows 8附带.NET 4.5

据我所知,唯一不向后兼容的是CLR版本,它在.NET 4.0之后被更改。

因此,如果我不希望用户仅为我的应用程序安装其他框架,我应该有我的应用程序的这些版本:

  • .NET 2.0 - XP(SP2和更高版本),Vista(3.0应该能够运行2.0)和7(3.5应该能够运行2.0)
  • .NET 4.0 - 如果某人仅安装了4.0并且没有其他
  • .NET 4.5 - 适用于没有安装其他.NET的Windows 8的用户

我是对的吗?或4.5 / 4.0向后兼容?

编辑:如果任何上方数据不对,请更正我

2 个答案:

答案 0 :(得分:9)

  

据我所知,唯一不向后兼容的是CLR版本,它在.NET 4.0之后被更改。

这不是真的。您可以在.NET4框架上运行.NET2编译的应用程序。

您只需将以下内容添加到app.config:

<configuration>
<startup>
    <supportedRuntime version="v2.0.50727"/>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
</configuration>

注意,我同意@KingKronus,即Why not just pick the lowest common denominator?

在你的情况下,将编译.NET2并且只有一组pdbs和一个编译集。

是的,您需要测试.NET2编译的应用程序在.net4运行时运行正常但是您需要在原始解决方案的每个框架中测试您的应用程序。

答案 1 :(得分:0)

  1. 实际上您无需手动检查。运行后,您的应用程序将显示正确的消息,并要求用户下载并安装所需的版本。

  2. 如果您仍需要支持Windows XP,请选择.NET 4.0。 .NET 4.5将处理它