11

我有一个 .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 - 适用于拥有 Windows 8 且未安装其他 .NET 的用户

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

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

4

2 回答 2

11

据我所知,唯一不向后兼容的是 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>

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

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

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

于 2012-12-17T14:09:06.067 回答
0
  1. 其实你不需要手动检查。您的应用程序将在您运行后显示正确的消息并要求用户下载并安装所需的版本。

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

于 2012-12-17T13:59:57.920 回答