Gibt es eine# Pragma oder eine ähnliche Anweisung für generierten C# -Codes, um Vorlagen -Code -Zeilennummern mit C# Zeilennummer zu entsprechen?

StackOverflow https://stackoverflow.com/questions/1358487

Frage

Ich habe ein Vorlagensystem, das dem ASP-Code im alten Stil ähnelt. Ich führe dies durch eine Klasse aus, die das Ganze in C# Quellcode umschreibt, kompiliert und schließlich ausführt.

Ich frage mich, ob es eine Art Pragma-ähnliche Richtlinie gibt, die ich den generierten C # -Code bestreuen kann, mit dem Kompilierfehler mit den Zeilennummern in meiner Vorlagendatei übereinstimmen.

Nehmen wir zum Beispiel an, ich habe diese erste und einzige Zeile in meinem Vorlagencode:

Object o = datta; // should be data, compiler error

Aber um dies zu kompilieren, muss ich einen Namespace, eine Klasse, eine Methode und einen Boiler-Plate-Code hinzuzufügen, so (Zufällige Zahl, nur für veranschaulichende Zwecke) im C# Code. Der Compiler -Fehler kennzeichnet natürlich meinen Fehler in Zeile Nr. 17 und nicht in Zeile 1.

Ich erinnere mich aus einer anderen Programmiersprache, die ich zuvor verwendet habe (obwohl ich mich nicht erinnern kann, welches), dass es eine Richtlinie hatte, die ich hinzufügen konnte, die die Fehlerzeilennummern aufstellen würde.

Gibt es so etwas in C# 3.5?

War es hilfreich?

Lösung

Du hast die #line Präprozessorrichtlinie.

#line Sie können die Zeilennummer des Compiler und (optional) die Dateinamenausgabe für Fehler und Warnungen ändern.

Das #line directive Kann in einem automatisierten Zwischenschritt im Build -Prozess verwendet werden. Wenn beispielsweise Zeilen aus der ursprünglichen Quellcodedatei entfernt wurden, der Compiler jedoch auch die Ausgabe basierend auf der ursprünglichen Zeilennummerierung in der Datei generiert, können Sie Zeilen entfernen und dann die ursprüngliche Zeilennummerierung simulieren #line.

Das #line hidden Die Richtlinie verbirgt die aufeinanderfolgenden Zeilen aus dem Debugger, so dass, wenn der Entwickler durch den Code tritt, alle Zeilen zwischen a #line hidden und der nächste #line Die Richtlinie (unter der Annahme, dass es sich nicht um eine weitere #line versteckte Richtlinie handelt) wird übertrifft. Diese Option kann auch verwendet werden, um ASP.NET zwischen benutzerdefinierter und maschinengenerierter Code zu differenzieren. Obwohl ASP.NET der Hauptverbraucher dieser Funktion ist, nutzen mehr Quellgeneratoren davon.

EIN #line hidden Die Richtlinie wirkt sich in der Fehlerberichterstattung nicht auf Dateinamen oder Zeilennummern aus. Das heißt, wenn ein Fehler in einem versteckten Block auftritt, meldet der Compiler den aktuellen Dateinamen und die Zeilennummer des Fehlers.

Das #line filename Die Richtlinie gibt den Dateinamen an, den Sie im Compiler -Ausgang erscheinen möchten. Standardmäßig wird der tatsächliche Name der Quellcode -Datei verwendet. Der Dateiname muss in doppelten Anführungszeichen ("") sein und eine Zeilennummer vorangestellt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top