Wie T4 und Visual Studio verwenden, um eine Teil Klasse zu erweitern

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

  •  22-08-2019
  •  | 
  •  

Frage

Ich wollte T4 verwenden, um Eigenschaften für eine Teilklasse zu erzeugen. Ich laufe in ein Konfigurationsproblem, wo meine .TT Datei im selben Projekt wie die Klassendatei, die ich erweitern möchten. Also, wenn ich die Versammlung in der .TT aufzunehmen habe es gesperrt ist Datei. Ich habe versucht, eine Befehlszeile in dem Pre-Build zu tun, aber das Problem besteht, dass VS will immer die .TT Datei mit dem Projekt neu kompiliert werden.

Die einzige Lösung, die ich denken kann, ist die .tt Dateien umbenennen .t4 zu sagen, und dann einen Pre-Build-Befehl mit texttrans -out die CS-Datei im Projektverzeichnis zu erstellen.

Kann jemand denken Sie an eine saubere Art und Weise, dies zu tun?

War es hilfreich?

Lösung

Unter der Annahme, dass die Verriegelung durch die Vorlage verursacht wird Spiegelung mit Metadaten der partiellen Klasse lesen Sie verlängern müssen, können Sie das Sperr Problem lösen, wenn Sie Codemodel verwenden. Diese API wird von Visual Studio zur Verfügung gestellt und ermöglicht es Ihnen, die Metadaten direkt aus der Quelldatei zu bekommen, ohne die Notwendigkeit, die partielle Klasse oder laden Sie die kompilierte DLL zu kompilieren. Hier ist ein Beispiel eines T4-Code-Generator, der diese Methode verwendet: http://www.olegsych.com/2008/07/t4-template-for-generating-sql-view-from-csharp-enumeration

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