2010-11-22 11 views
1

ich auf einer Desktop-Anwendung arbeite, wo, wenn ich thaught den Fehler im catch-Block in dem Ereignisprotokoll der Handhabung dann bin ich einen Fehler alsFehler in catch-Block

bekommen

Fehler 3 Der Typ oder Namespace-Name ' EventLog‘konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

in diesem

catch (Exception ex) 
{ 
    EventLog log = new EventLog("Application"); 
    log.Source = "MFDBAnalyser"; 
    log.WriteEntry(ex.Message); 
} 

für Vorschläge warten.

+3

So fügen „fehlen Sie eine Richtlinie oder eine Referenz‚mit‘“? – khachik

Antwort

4

nach oben hinzufügen:

using System.Diagnostics; 

oder direkt verwenden:

catch (Exception ex) 
{ 
    System.Diagnostics.EventLog log = new System.Diagnostics.EventLog("Application"); 
    log.Source = "MFDBAnalyser"; 
    log.WriteEntry(ex.Message); 
} 

oder wenn Sie .NET 3.5 oder 4.0/VS 2008 oder 2010 (die am meisten bevorzugte Art und Weise) mit:

catch (Exception ex) 
{ 
    using (var log = new System.Diagnostics.EventLog("Application") { Source = "MFDBAnalyser" }) 
    { 
     log.WriteEntry(ex.Message); 
    } 
} 
  • Stichwort var reduziert den Code lengt h.
  • Sie sollten Dispose() anrufen (oder using Block verwenden) für Klassen implementieren IDisposable!
2

System.dll Unter der Annahme von Ihrem Projekt (in der Regel der Fall ist) verwiesen wurde, können Sie dieses Problem, indem entweder lösen:

  • den Namespace importieren, durch das Hinzufügen einer using System.Diagnostics; Direktive am Anfang der Datei .
  • Qualifizieren Sie den Typ vollständig - System.Diagnostics.EventLog log = ...
  • Bereitstellung eines Alias. ZB indem Sie using EventLog = System.Diagnostics.EventLog; an der Spitze Ihrer Datei hinzufügen.
1

Haben Sie eine Verwendungsrichtlinie zu System.Diagnostics hinzugefügt?

Wenn nicht, müssen Sie es stattdessen als System.Diagnostics.EventLog schreiben.

1

Sie sollten EventLog Klassenbibliothek Bezug auf Ihre Referenz System.Diagnostics