"CLR20r3"是什么意思?(它是哪个版本的CLR)

10

显而易见的选择是“CLR版本2.0修订版3”,但不幸的是,这样的东西不存在。我能找到的最靠谱的列表是维基百科,但那个列表使用的是主/次编号系统。

之所以会提出这个问题,是因为有一位客户试图运行我的.NET 4应用程序,但它一直在XmlReader.Dispose()上崩溃并且提示clr20r3 MissingMethodException错误。后来发现他们的计算机上安装的.NET 4失败了,所以它没有系统的system.xml.dll。

但在排除故障时,我尝试查明clr20r3的含义(如果我没记错,.NET 3也使用了CLR2)。

有人知道如何找出CLR版本吗?搜索Google会出现很多人解决应用程序崩溃的问题,但没有关于真正的CLR版本的信息。

谢谢


如果未安装正确的VC++运行时,您可能会遇到相同的错误。 - rfmodulator
2个回答

9
那是一个嵌入在c:\windows\system32\wer.dll中的字符串,Windows错误报告支持dll。它是硬编码的,所以你需要和程序员交谈才能真正知道它要表达的意思。"Common Language Runtime version 2.0 revision 3" 是最好的猜测,否则就没有很好的提示 "revision 3" 应该是什么意思了。可能是微软内部的设计文档。
你可以从这个答案中获取有关 P1 到 P10 值的更多信息(此答案链接)。只要确保它不会到达这一步,因为WER在崩溃发生时丢失了太多有用的调试信息。编写AppDomain.CurrentDomain.UnhandledException的事件处理程序,并记录或显示e.ExceptionObject.ToString()的值。使用Environment.Exit()来防止WER得到其控制。

5

我猜想如果clr20r3曾经代表特定版本的CLR(或其次要版本),那么现在已经不再是了。.NET 4.0(CLR 4.0)进程遇到未捕获异常或者Environment.FailFast()方法导致的崩溃时,事件数据中会显示相同的令牌,在Windows事件查看器中可见。

今天,我猜测它只是用于Windows错误报告中表示CLR本身的事件类型。


如果没有更好的建议,明天我会把这个标记为答案,听起来很合理 :) - JasonS

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接