“.NET 运行时”实际上是指“公共语言运行时”(CLR),它是 .NET 框架 2.0、3.0 和 3.5 的 2.0 版。只有在 .NET 4.0 中,CLR 版本也增加到了 4.0(有很多关于 SO 上的双版本的混淆问题,请参阅answer)。因此,您看到的消息可能令人困惑,但仍然是正确的。
如果您尚未安装 .NET 4.0,则 .NET 运行时 2.0 是您计算机上唯一存在的版本。
您可能想知道应用程序是否实际上是针对 .NET 框架 3.0 (3.5) 而不是 .NET 框架 2.0 编译/构建的。
要获取此信息,您需要查看应用程序程序集的元数据,即存储对其他程序集(包括 .NET 框架本身的引用)的引用的位置 - 以及其他程序集的版本。
要查看此信息,您可以使用 Reflector,或 .NET Framework SDK(或 Visual Studio)附带的 ILDASM.EXE。
例如,在您选择的二进制文件(可执行文件或 DLL)上使用 ILDASM.EXE,然后打开“MANIFEST”节点。你会看到这样的条目:
.assembly extern System.Windows.Forms
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
在这种情况下,这是从 .NET 4.0 应用程序中获取的,仅引用 System.Windows.Forms.dll,但我想你明白了。
您可以(部分)影响应用程序使用的运行时版本,方法是在应用程序的配置文件中指定<supportedRuntime> 元素。有关此问题的更多讨论,请参阅this Stack Overflow question,其中others。