如何学习确切的.NET平台版本?

3

代码:

Console.WriteLine(Environment.Version);

对于.NET Framework 2.0、3.0和3.5 SP1,返回相同的结果(2.0.50727.5448)。我该如何了解已安装的.NET平台的确切版本?


1
相似:https://dev59.com/knI_5IYBdhLWcg3wAeLl - Hansi
1
https://dev59.com/MXNA5IYBdhLWcg3wdtpd - Min Min
6
是的,所有这些框架版本都使用相同的运行时版本。 - Oded
3个回答

4
你需要读取注册表键来检测服务包版本。这篇文章解释了你需要查找的键/值对是什么。例如,你可以通过查看内部值来区分3.5和3.5 SP1。请参考此文
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5

"plain" 3.5版本具有Install = 1,而SP1版本则具有SP >=1

请滚动到链接文章底部查看完整的表格。


我需要指定当前平台,而不是计算机上所有可用的平台。 - Andrey Bushman
寄存器如何帮助我了解代码当前执行的平台信息? - Andrey Bushman
@EvgenyGorb 已完成。感谢您的评论! - Sergey Kalinichenko

4
2.0、3.0、3.5和3.5SPx都基于相同的2.0核心库。实际上,所有这些版本都是2.0加上额外的组件。此答案包含版本列表:.NET Framework、CLR和Visual Studio版本号如何相互关联?以及相关信息。
因此,当您询问运行时环境版本时,您将得到2.0(据我所知,其他变体为1、1.1和4.0)。
如果您需要3/3.5/SP区分,请参考@dasblinkenlight的回答。否则,请解释您想要做什么以获得更多建议。

4
System.Runtime.InteropServices.RuntimeEnvironment.GetSystemVersion()

2
不是的,这是错误的响应。在这种情况下,我收到了它(对于所有人):v2.0.50727。 - Andrey Bushman
@Bush:你确定你的代码不是在2.0.50727上运行吗?你可以通过在运行时检查加载的dll来验证这一点。 - Vlad
@Vlad:在MS Visual Studio项目中,我将目标平台更改为2.0、3.0、3.5 SP1,但是我得到的是上述代码选项的相同值。 - Andrey Bushman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接