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

标签 .net exception frameworks runtime clr

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

最佳答案

“.NET runtime”实际上是指“Common Language Runtime”(CLR),对于.NET Framework 2.0、3.0 和3.5 来说已经是2.0 版了。仅在 .NET 4.0 中,CLR 版本也增加到 4.0(对于 SO 上的这种双版本控制有很多问题和困惑,要获得一个很好的概述,请参见 answer)。因此,您看到的消息可能令人困惑,但仍然是正确的。

如果您尚未安装 .NET 4.0,则 .NET runtime 2.0 是您机器上唯一的版本。

您可能想知道应用程序是否实际上是针对 .NET Framework 3.0 (3.5) 而不是 .NET Framework 2.0 编译/构建的。

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

要查看此信息,您可以使用 Reflector,或 ILDASM.EXE它随 .NET Framework SDK(或 Visual Studio)一起提供。

例如,使用 ILDASM.EXE在您选择的二进制文件(可执行文件或 DLL)上,然后打开“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 .

关于.net 运行时 2.0 而不是最新版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593896/

相关文章:

c# - 在字符串中的冒号之间添加空格

scala - 读取行期间的 Source.fromInputStream 异常处理

javascript - 观看属性(property)在 Vuejs 中不起作用

php - Codeigniter 三表Join,显示图像问题

c# - Lambda 解释和它是什么以及一个很好的例子

c# - DbContext 在传递到另一个 `using` block 时过早处置

c# - 为 Winforms 应用程序添加命令行支持

php - MethodNotAllowedHttpException laravel-4

java - 如何为包的所有类中的所有方法替换 catch block 中的现有代码?

database - 有没有人对 GUI 销售点系统有数据库、编程语言/框架建议?