Frage

Ich bin mit SubSonic 3 (Active Modus), um den Code für meine DAL zu erzeugen. Es nutzt T4-Vorlagen (.tt) Dateien, sobald Sie den Code für Sie speichern, erzeugen.

Das möchte ich meinen NANT bauen als Teil automatisieren, aber ich kann das nicht an der Arbeit. Ich weiß, dass MS ein Werkzeug zur Verfügung stellt genannt texttrans den Code aus T4-Vorlagen zu erzeugen, aber im Fall der SubSonic Vorlagen dies scheint nicht zu arbeiten - ich glaube, die Vorlagen einige Annahmen über die Vorlage zu seinem Lauf machen in Visual Studio, das scheint nicht von der Kommandozeile zu arbeiten. Die Störung, die ich erhalte, wenn ich versuche, es gegen ActiveRecord.tt laufen soll:

Subsonic \ ActiveRecord.tt (0,0): Fehler: Lauf Transformation: System.InvalidCastException: Kann nicht Gussobjekt des Typs 'Microsoft.VisualStudio.TextTemplating.CommandLine.CommandLineHost' 'System.IServiceProvider' eingeben.    bei Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b. (GeneratedTextTransformation.GetCurrentProject) in C: \ Users \ matt.roberts \ AppData \ Loc al \ Temp \ subsonischen \ Settings.ttinclude: Linie 103    bei Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b. GeneratedTextTransformation.GetConnectionString (String connection) in C: \ U sers \ matt.roberts \ AppData \ Local \ Temp \ Unterschall \ Settings.ttinclude: Linie 51    bei Microsoft.VisualStudio.TextTemplating3d54bbced2424853b667e74a81b9089b. GeneratedTextTransformation.get_ConnectionString in c (): \ Users \ matt.roberts \ AppData \ Local \ Temp \ Unterschall \ Settings.ttinclude: Zeile 87

Hat jemand es geschafft, diese Generation zu automatisieren?

Danke

Matt.

War es hilfreich?

Lösung

Ich schrieb einen Blog-Eintrag, dass Abdeckungen dieser Grund etwas:

Optionen für die Ausführung von T4-Vorlagen aus. NET-Code

Zu tun, was Sie versuchen, eine Operation auf den SubSonic T4-Vorlagen zu tun erfordert. Genauer gesagt, haben Sie (minimal), um alle Verweise auf EnvDTE.DTE mit etwas zu ersetzen, das nicht Visual Studio erfordert zu laufen. Das so einfach wie hart sein, einige Pfade Codierung und / oder Konfigurationsinformationen in der T4-Vorlagen, wenn Sie wollen einfach nur „get it arbeiten“.

Es ist wichtig, sich daran zu erinnern, dass T4-Vorlagen sind eine etwas dünne Wrapper um Code .NET. Wenn Sie es von .NET tun können, können Sie sehr wahrscheinlich es von T4 tun, müssen Sie nur verstehen, wie man die Arbeit im anderen Satz von Einschränkungen, die T4 liefert. Verschiedene T4 „hosts“ (wie Visual Studio vs. TextTransform.exe) verhalten sich auf unterschiedliche Weise und nur weil ein T4-Vorlage läuft gut unter einem Host bedeutet nicht, es nicht in Ordnung unter einem anderen Host ausgeführt wird.

Andere Tipps

setting.ttinclude werden muss, um innerhalb des Projekts von Visual Studio ausführen, wenn Sie von der Kommandozeile ausführen wollen, müssen Sie die Einstellungen, um die Verbindung geben String-Datei und nicht in den Konfigurationsdateien auf sie zeigen, dass Sie auch haben einen Projektpfad zu setzen.

Sie seee es dem Aufruf dieser:

string GetConnectionString(string connectionStringName){
    var _CurrentProject = GetCurrentProject();

    string result="";
    ExeConfigurationFileMap configFile = new ExeConfigurationFileMap();
    configFile.ExeConfigFilename = GetConfigPath();

das ist wahrscheinlich, wo das Problem ergibt sich, wenn Sie also diese von Hand einstellen dann Sie oproblem dann gelöst werden könnte

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