如何确定是否安装了.NET 4.02?

时间:2011-11-09 12:25:24

标签: .net .net-4.0

我已经问过this question yesterday - 它被一些没有花时间自己仔细阅读问题/评论的人关闭为“完全重复”! 所以,另一个尝试 - 也许它有时间接受一些有效的答案,然后再次因为一些无意义的原因而被关闭。

微软最近发布了一些针对.NET Framework的“更新”。不幸的是,我不知道如何找出安装的版本。框架版本保留在4.0.30319.239

感谢您的一些启发; - )

PS:将app.config中的supportedRuntime设置为Version = 4.0.2会使应用程序在启动时告诉我4.0.2未安装(在任何时候 - 所以必须有一个“真实”版本可以的地方实测值)。

3 个答案:

答案 0 :(得分:13)

看看:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs

如果您已安装4.0.2,则存在以下附加节点:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.1
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.1,Profile=Client
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2,Profile=Client

答案 1 :(得分:1)

这不应该有所作为。您没有定位框架的特定内部版本号,而是定位版本号,在本例中为4.0。你在做什么,你需要知道确切的内部版本号?

  

WTF - 为什么要使用buildcounters?!

你为什么不呢?它详细说明了框架的完全版本。通常,您不会发布带有“这是版本1.0.0.0”的软件,因为它可能会导致对更新/修补程序等版本的破坏。

仅仅针对.NET 4.0就足够了。

答案 2 :(得分:1)

我们试一试:

如果您知道某个类中的特殊函数/方法只存在于.NET 4.02中但不存在于.NET 4.0中,那么我会使用反射来例如get a list of all methods of a class或特定方法的签名。

如果只有内部(方法/属性)更改,您可以使用ILSpy搜索此类更改,然后再次使用反射来检查更改。

另一方面,我不确定某些安全限制是否会妨碍您进行反思。