Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net运行时2.0而不是最新版本?_.net_Exception_Frameworks_Runtime_Clr - Fatal编程技术网

.net运行时2.0而不是最新版本?

.net运行时2.0而不是最新版本?,.net,exception,frameworks,runtime,clr,.net,Exception,Frameworks,Runtime,Clr,在我的计算机上,我安装了.NET Framework 2.0,然后是.NET Fratmeworkt 3.0。然而,最近我从一个程序中得到一个异常,它说“Event 1000、.NET Runtime 2.0错误报告”。我想知道,为什么这个程序仍然使用.NET运行时2.0而不是新版本。如何检查特定程序使用的.NET运行时版本?是否可以更改它?这完全取决于所讨论的应用程序是针对哪个.NET版本编译的。开发人员选择目标框架。据我所知,最终用户无法更改部署后使用的库的版本。如果应用程序的目标是2.0,

在我的计算机上,我安装了.NET Framework 2.0,然后是.NET Fratmeworkt 3.0。然而,最近我从一个程序中得到一个异常,它说“Event 1000、.NET Runtime 2.0错误报告”。我想知道,为什么这个程序仍然使用.NET运行时2.0而不是新版本。如何检查特定程序使用的.NET运行时版本?是否可以更改它?

这完全取决于所讨论的应用程序是针对哪个.NET版本编译的。开发人员选择目标框架。据我所知,最终用户无法更改部署后使用的库的版本。如果应用程序的目标是2.0,即使安装了4.0,它也将始终在2.0版本的libs上运行。

the“.NET运行时”实际上指的是“公共语言运行时”(CLR),对于.NET framework 2.0、3.0和3.5来说,它是2.0版本。只有在.NET 4.0中,CLR版本也增加到了4.0(关于这种双版本控制,存在很多问题和困惑,请参见此)。因此,您看到的信息可能令人困惑,但仍然是正确的

如果尚未安装.NET 4.0,.NET运行时2.0是计算机上唯一的版本

您可能想知道应用程序是否实际是根据.NET framework 3.0(3.5)而不是.NET framework 2.0编译/构建的

要获取此信息,您需要查看应用程序程序集的元数据,即存储对其他程序集(包括.NET framework本身的程序集)的引用的位置,以及这些其他程序集的版本

要查看此信息,可以使用Reflector或.NET Framework SDK(或Visual Studio)附带的
ILDASM.EXE

例如,在您选择的二进制文件(可执行文件或DLL)上使用
ILDASM.EXE
,然后打开“清单”节点。您将看到如下条目:

.assembly extern System.Windows.Forms
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
在本例中,这是从.NET4.0应用程序中获取的,仅指
System.Windows.Forms.dll
,但我想您已经了解了


通过在应用程序的配置文件中指定元素,可以(部分)影响应用程序使用的运行时版本。有关这方面的更多讨论,请参见。

Runtime是关键字。运行时只有4个不同的版本:1.0、1.1、2.0和4.0。您仍在使用CLR和抖动的2.0.50727版本。mscorlib.dll和其他核心.NET framework程序集仍然是2.0.0.0

当你安装.NET3.0时,你肯定添加了很多好东西,一系列支持WCF、WPF和Linq的新程序集,以及一个新版本的C#编译器。即使他们不需要运行时的新版本,也足以保证版本号的增加


下一个版本的.NET 4.5也会发生同样的情况。运行时版本保持不变,4.0.30319

回答得很好,我对此没有很好的概述。这里有一个很好的小玩具:-试着在页面的下方下拉一点。同样在这里:-只是从2020年开始的一些额外链接。好的,我将坚持MSI问题。刚刚得知这个消息。仍然困惑:-)。