我的实际问题是,我遇到了两个版本的.NET 4.5完整安装程序:

  • 一个(可能是)较旧的版本,在下载SQL Server数据工具时也可以使用
  • 大小:50,349,920
  • md5:a5e81d1b3905ada0a6e35fd6c6a2e1f4
  • 今天早上从这里下载的一个(可能是)较新的版本:http://www.microsoft.com/visualstudio/eng/downloads
  • 大小:50,352,408
  • md5:d02dc8b69a702a47c083278938c4d2f1

  • 两种设置的版本均为4.5.50709.17929。在内部,主要区别是netfx_Full.mzz文件,但是用7-zip提取内容后,即使文件内容不同,我最终还是得到了许多具有相同版本的文件(我从426个文件中检查了大约20个随机文件),因此我无法真正分辨出哪个较新。

    有没有一种方法可以可靠地检测已安装的.NET 4.5运行时的实际版本,因此仅在确实需要安装程序时才可以运行该安装程序?

    更新

    我已经检查了所有426个具有不同内容的文件,并且它们在两个设置中都具有相同的ProductVersion和FileVersion。因此,下一步是注册表或文件校验和。

    更新2

    注册表中列出的版本对于两种设置都是相同的:4.5.50709
    更新3

    .NET 4.5.2现在可用:

    最佳答案

    MS最近修补了.NET 4.5,以在某些情况下恢复与.NET 4.0的向后兼容性(请参阅http://blogs.msdn.com/b/dotnet/archive/2012/10/17/net-framework-4-5-off-to-a-great-start.aspx)。

    MS可能会通过这些更改来更新安装程序(以便升级到.NET 4.5的用户不会遇到兼容性问题),尽管我不知道他们为什么不更改安装程序的版本号。

    另外,请注意System.Environment.Version报告的.NET版本号和运行时版本号之间存在差异。对于.NET 4.5,后者仍然是4.0.30319。*,只有修订号更改(.NET 4.5更新以及每个安全更新)。

    以下是一些野外观察到的运行时版本示例:

    Base 4.0

  • 4.0.30319.1 = .NET 4.0 RTM
  • 4.0.30319.269 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS12-035 GDR安全更新)
  • 4.0.30319.276 = Windows XP SP3上的.NET 4.0(4.0.3运行时更新)
  • 4.0.30319.296 = Windows XP SP3 7上的.NET 4.0(带有MS12-074 GDR安全更新)
  • 4.0.30319.544 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS12-035 LDR安全更新)
  • 4.0.30319.1008 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS13-052 GDR安全更新)
  • 4.0.30319.1022 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS14-009 GDR安全更新)
  • 4.0.30319.1026 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS14-057 GDR安全更新)
  • 4.0.30319.2034 = Windows XP SP3、7、7 SP1上的.NET 4.0(带有MS14-009 LDR安全更新)

  • 4.5
  • 4.0.30319.17626 = .NET 4.5 RC
  • 4.0.30319.17929 = .NET 4.5 RTM
  • 4.0.30319.18010 = Windows 8上的.NET 4.5
  • 4.0.30319.18052 = Windows 7 SP1 64位
  • 上的.NET 4.5
  • 4.0.30319.18063 = Windows 7 SP1 64位(带有MS14-009安全更新)上的.NET 4.5

    4.5.1
  • 4.0.30319.18408 = Windows 7 SP1 64位
  • 上的.NET 4.5.1
  • 4.0.30319.18444 = Windows 7 SP1 64位(带有MS14-009安全更新)的.NET 4.5.1
  • 4.0.30319.34014 = Windows 8.1 64位
  • 上的.NET 4.5.1

    4.5.2
  • 4.0.30319.34209 = Windows 7 SP1 64位
  • 上的.NET 4.5.2
  • 4.0.30319.34209 = Windows 8.1 64位
  • 上的.NET 4.5.2

    4.6及更高版本
  • 4.0.30319.42000

  • 我的Windows更新历史记录中没有看到任何.NET更新,所以我猜对v18010的更新已安装为KB 2756872的一部分。

    更新:显然,由于原始下载中的数字签名错误,Microsoft更新了.NET 4.5安装程序。 KB 2770445

    关于.net - 如何可靠地检测实际安装的.NET 4.5版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12971881/

    10-09 15:50
    查看更多