2011-12-28 9 views
9

la scelta ovvia sarebbe "CLR versione 2.0 revisione 3" ma sfortunatamente non esiste una cosa del genere. Il più vicino possibile a un elenco definitivo è wikipedia, ma che utilizza i sistemi di numerazione maggiore/minore.cosa significa "CLR20r3"? (quale versione del clr è)

La ragione per questo è venuto in su, è perché ho avuto un cliente cercando di eseguire il mio .net4 app, ma continuava a schiantarsi con clr20r3 MissingMethodException sul XmlReader.Dispose() scopre il .net4 Impossibile installare sul proprio computer in modo che didn avere il .net 4 system.xml.dll.

Ma durante la risoluzione di questo problema, stavo cercando di scoprire cosa intendeva dire clr20r3 (anche IIRC, .net 3 usava il CLR2).

qualcuno ha avuto un vantaggio per averlo capito? la ricerca su google arriva con un sacco di persone che risolvono i crash dell'applicazione, ma non ci sono informazioni su quale versione del CLR sia realmente.

grazie

+0

È possibile ottenere lo stesso errore se il runtime VC++ corretto non è installato. – rfmodulator

risposta

9

Questa è una stringa trasformata in c: \ windows \ system32 \ wer.dll, la dll di supporto di Segnalazione errori di Windows. È hard-coded quindi avresti bisogno di parlare con il programmatore per sapere veramente cosa avrebbe dovuto significare. "Common Language Runtime versione 2.0 revisione 3" è una buona ipotesi come con nessun altro suggerimento che cosa "revisione 3" dovrebbe significare. Probabilmente un documento di design interno in Microsoft.

È possibile ottenere maggiori informazioni sui valori da P1 a P10 da this answer. Assicurati solo che non arrivi mai così lontano, troppe informazioni utili per il debug si perdono quando WER mette le mani sull'arresto. Scrivi un gestore di eventi per AppDomain.CurrentDomain.UnhandledException e registra o visualizza il valore di e.ExceptionObject.ToString(). Environment.Exit() per impedire al WER di annusarlo.

+0

ottimo dettaglio, grazie – JasonS

5

Credo che se clr20r3 mai rimasto per una particolare versione del CLR (o un minore rilascio di esso) non lo fa più. Un processo .NET 4.0 (CLR 4.0) che termina con un'eccezione non rilevata o Environment.FailFast() produce lo stesso token nei dati dell'evento, visibile nel visualizzatore eventi di Windows.

Oggi, direi, è proprio il tipo di evento utilizzato in Segnalazione errori di Windows per il CLR in quanto tale.

+0

sembra ragionevole, segnerò questo come risposta domani se niente di meglio mostra :) – JasonS