【发布时间】:2012-01-20 23:25:19
【问题描述】:
我从 http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27541 安装了 .NET 4.5 Developer preview,它“替换”了 .NET 4.0 版本。
但是,检测 .NET 框架版本的旧方法似乎返回 4.0(更准确地说是我的 PC 上的 4.0.30319.17020),而不是 4.5(肯定可能是为了向后兼容,或者?):
using System;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
var version = Environment.Version;
Console.WriteLine(version.ToString());
Console.ReadKey();
}
}
}
如何检测我的代码是否真的由 .NET 4.5 执行?
【问题讨论】:
-
没有“CLR 4.5”,仍然使用CLR 4.0.30319版本。
-
@tobias86:.NET 4.5 不同。它取代了您 PC 上的 .NET 4.0! :)
-
好吧,把点连起来,你问题的最后一句话因此无法回答。唯一合乎逻辑的事情是检查是否安装了 4.5。如果是,那么 4.0 版本就无法执行您的程序。
-
HansPassant, CodyGray:我们假设,我安装了 .NET 4.5,但现在很困惑是它真的有效还是在安装过程中出了什么问题,我仍然使用 .NET 4.0(对于 Windows 应用程序,尤其是 ASP.NET 应用程序)。 NET MVC 主机)。我不想做 GC 基准测试或使用“功能检测”(参见 Christian.K 的回答)来了解执行我的代码的运行时。 .NET 4.5 引入了大量改进/新功能,让我感到困惑的是,无法检测它执行的代码(不是检测安装的 v4.5,这很简单,但它实际上可以工作!)。
-
@EverQ 我并没有试图把话放在你的嘴里或做出任何假设(因此我说“你仍然没有似乎......”)。如果您有任何冒犯,请对此深表歉意。无论如何,关于您的示例,您可以确定新的 CLR(即使它附带 .NET 4.5,它显然仍然是 v4.0)。下面给出示例。