Ich versuche, eine vorverarbeitete T4-Vorlage zu debuggen, und ich bin nicht in der Lage, in die Klasse zu gelangen, die durch Ausführen der vorverarbeiteten Vorlage erstellt wurde. Ich bin in der Lage, eine Instanz der Klasse zu erstellen, aber sobald ich versuche, während des Debuggens zu betreten, erscheint ein neues Fenster mit dem Hinweis
Keine Quelle verfügbar. Für den aktuellen Standort ist kein Quellcode verfügbar.
Mein Verständnis war, dass vorverarbeitete Vorlagen wie eine normale c # -Klasse debuggt werden können, ist das nicht korrekt? Gibt es etwas Bestimmtes, das Sie tun müssen, um in die Klasse zu gelangen, die von einer vorverarbeiteten Vorlage definiert wird?
Hier ist eine sehr einfache Vorlage und der aufrufende Code, mit dem ich das Problem habe:
TestPreprocessedTemplate.tt:
%Vor%Testcode:
%Vor%Bearbeiten - Fügen Sie die debug="true" -Anweisung gemäß dem folgenden Vorschlag hinzu, haben Sie immer noch das gleiche Problem.
Update - Ich habe diese Frage auch in den MSDN-Foren gepostet und eine Antwort von einem MS-Mitarbeiter erhalten, der ja angegeben hat, was ich oben beschrieben habe. sollte funktionieren. Ist noch jemand auf dieses Problem gestoßen?
Update - Mit Hilfe der MSDN-Foren scheint das Problem bei den #line-Anweisungen zu liegen, die zur generierten c # -Klasse hinzugefügt werden. Durch das Auskommentieren kann ich den Code wie erwartet durchgehen. Gibt es eine Möglichkeit, zu verhindern, dass diese Direktiven zur generierten Klasse hinzugefügt werden? Mit einer ASP.NET-Seite können Sie den Parameter LinePragmas="false" hinzufügen, der jedoch keine Auswirkungen auf a hat T4-Vorlage. Irgendwelche Ideen?
In Visual Studio 2010 müssen Sie Debugger.Launch () vor Debugger.Break () aufrufen.
oleg ist der Meister, den ich überprüfen würde Ссылка
Update - Mit Hilfe der MSDN-Foren scheint das Problem mit den #line-Direktiven zu bestehen, die zur generierten c # -Klasse hinzugefügt werden. Durch das Auskommentieren kann ich den Code wie erwartet durchgehen. Gibt es eine Möglichkeit zu verhindern, dass diese Anweisungen der generierten Klasse hinzugefügt werden? Mit einer ASP.NET-Seite können Sie den Parameter LinePragmas="false" hinzufügen, der jedoch keine Auswirkungen auf eine T4-Vorlage hat. Irgendwelche Ideen?
Die #line-Direktiven erzeugen tatsächlich Probleme beim Debuggen von vorverarbeiteten T4-Vorlagen (der Debugger sucht immer nach der * .tt-Datei anstelle der generierten * .cs-Datei). Ich war nicht in der Lage, eine Möglichkeit zu finden, die Generation der #line-Direktiven abzuändern. Also verwende ich das folgende VisualStudio Macro, um sie loszuwerden
%Vor%Ich weise das Makro immer einem kurzen Befehl im Befehlsfenster zu
%Vor% So kann ich die #line-Direktiven entfernen, indem ich einfach rl im Befehlsfenster aufruft, während die generierte * .cs-Datei aktiv ist, wenn ich das Preprocessed
Nicht die ideale Lösung, aber es funktioniert:)
Tags und Links c# visual-studio-2010 visual-studio t4 code-generation