T4 vorverarbeitetes Template-Debugging funktioniert nicht - Visual Studio 2010 RTM

8

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?

    
user423293 17.08.2010, 20:10
quelle

3 Antworten

2

In Visual Studio 2010 müssen Sie Debugger.Launch () vor Debugger.Break () aufrufen.

oleg ist der Meister, den ich überprüfen würde Ссылка

    
James Fleming 25.08.2010 04:45
quelle
1

Es sieht so aus, als ob Sie das Element debug="true" im Template-Header, das für das Debugging erforderlich ist, nicht finden.

Ich würde auch einen kurzen Blick auf den folgenden Blogartikel werfen, der das T4-Vorlagen-Debugging sehr detailliert behandelt.

JaredPar 17.08.2010 20:17
quelle
1
  

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 T4-Vorlage. Nach dem Entfernen der #line-Anweisungen funktioniert das Debuggen der generierten Template-Klasse wie erwartet.

Nicht die ideale Lösung, aber es funktioniert:)

    
paiden 21.09.2011 19:06
quelle