请注意,此问题是指运行应用程序的版本,而不是所有已安装的版本,以及框架(如VS中所示为“目标框架”)而不是运行时。
感谢。
答案 0 :(得分:3)
您可以使用Environment类的Version属性。 Concating主要版本号和次要版本号将为您提供框架版本(例如2.0)。 MSDN:http://msdn.microsoft.com/en-us/library/system.environment.version.aspx
答案 1 :(得分:1)
如果您想获得当前正在运行的CLR版本,请使用Novakov的方法(例如4.0.30319.239):
Environment.Version
如果您想知道项目是针对构建的CLR版本(例如4.0.0.0),请使用以下命令:
GetType().Assembly.GetReferencedAssemblies().Single(a => a.Name == "mscorlib").Version
这可能会为您提供与当前运行的CLR不同的值,因为较旧版本的程序集可能在较新版本的CLR中运行。请注意,2.0,3.0和3.5的“目标框架”都将返回2.0.0.0,因为它们都是针对CLR的2.0版本构建的。
您可以执行额外的检查,可能会发现CLR 2.0项目是使用3.5的目标框架构建的:
typeof(ConsoleSandbox.Program).Assembly.GetReferencedAssemblies()
.SingleOrDefault(a => a.Name == "System.Core") == null
如果目标框架为3.5(如果mscorlib为4.0.0.0则为4.0),则上述表达式将评估为true;如果目标框架为2.0或3.0,或者如果未使用System.Core.dll,则评估为false (例如,已升级的2.0 / 3.0项目。)
如果你解释问题背后的需要,可能会给你一个更好的答案。