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

ble*_*lez 10 .net clr .net-2.0

我有一个.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向后兼容?

编辑:如果任何上层数据不正确,请纠正我

wal*_*wal 10

据我所知,唯一不向后兼容的是CLR版本,它在.NET 4.0之后发生了变化.

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

您只需将以下内容添加到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>
Run Code Online (Sandbox Code Playgroud)

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

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

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