Frage

Ich versuche, die T4MVC Vorlagen zu meinem Projekt hinzuzufügen, aber ich habe einige Probleme auftreten. Ich ging auf Codeplex und heruntergeladene die neueste Version von T4MVC , und nach der nur kopiert Anweisungen ich die beiden Dateien T4MVC.tt und T4MVC.Settings.t4 in die Wurzel meiner Web-Anwendung.

Sofort bekam ich folgende Fehler:

Von T4MVC.cs (generierte Datei):

Ein Namensraum nicht direkt Mitglieder wie Felder oder Methoden
enthalten

Von T4MVC.tt (die Codeerzeugungs Vorlage):

Kompilieren Transformation: Der Typ oder Namespace-Name ‚ITextTemplatingEngineHost‘ konnte nicht gefunden werden (? Fehlt eine using-Direktive oder ein Assemblyverweis)

Wenn ich offen T4MVC.cs, es enthält nur eine Zeile:

ErrorGeneratingCode

Ich fand diesen Beitrag das legt nahe, wieder nur bauen, aber diese Lösung ist mein Problem nicht lösen - in der Tat, es ist nichts zu ändern. Was soll ich tun?

War es hilfreich?

Lösung

OK, ich es herausgefunden. Das Problem war, dass anscheinend seit der letzten Veröffentlichung des T4MVC Paket, Microsoft die Position der ITextTemplateHost Schnittstelle geändert, so dass ich einen anderen Namensraum importieren benötigt. Auch die .dll Dateien mit diesen Namensräumen sind nicht in dem Standard-ASP.NET MVC-Vorlage Projekt importiert. Das ist, was ich tat es funktioniert:

  1. Fügen Sie Verweise auf die folgenden DLL-Dateien (Suchpfade auf meinem Rechner in Klammern):

    • Microsoft.VisualStudio.TextTemplating.10.0.dll ( C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.10.0 \ v4.0_10.0.0.0__b03f5f7f11d50a3a \ Microsoft. VisualStudio.10.0.dll )

    • Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll ( C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL \ Microsoft.VisualStudio.TextTemplating.Interfaces.10.0 \ v4.0_10.0.0. 0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.TextTemplating.Interfaces.10.0.dll )

  2. Stellen Sie sicher, dass die folgenden Namespaces sind beide in T4MVC.tt importiert (nur die Syntax folgen, das sich bereits in der Datei).

    • Microsoft.VisualStudio.TextTemplating

    • Microsoft.VisualStudio.TextTemplating.Interfaces

  3. Löschen Sie alle generierten Code-Dateien (sie werden angezeigt, wenn Sie die T4MVC.tt in Projektmappen-Explorer erweitern).

  4. Build-Projekt. Wenn keine Dateien erzeugt werden, offen T4MVC.tt, bearbeiten etwas, nicht speichern und bauen. Das sollte es tun!

Andere Tipps

NACHTRAG - ASP.NET MVC 3 RTM

Als Nachtrag zu diesem Thema, wenn Sie nur ASP.NET MVC 3 RTM installiert haben, können Sie ähnliche Probleme in Projekten getroffen, die einen des Kandidaten erstellt wurden MVC 3 Release verwenden.

lösen:

Stellen Sie sicher, dass Sie T4MVC.2.6.40 oder später mit NuGet installiert.

Dh, installieren Sie T4MVC mit Tools >> Bibliothekspaket verwalten. In der Konsole ein:

uninstall-package t4mvc 

und dann:

install-package t4mvc 

Sie die neueste Version erhalten.

Sie werden jetzt wahrscheinlich erhalten Sie die folgenden Fehler in der T4MVC.tt-Datei:

A namespace cannot directly contain members such as fields or methods

Öffnen Sie die Datei, machen es verschmutzt (zB durch den Kommentar mit der Wellenlinie zu löschen) dann ohne Speichern schließen !!! Siehe David Ebbo Antwort, t4mvc.tt BRAUCHT schmutzig sein!

Recompile und ein Leben gehen zu bekommen.

Es scheint, man habe es funktioniert, aber lassen Sie mich hier ein paar Punkte hinzufügen.

über die Notwendigkeit, Import Microsoft.VisualStudio.TextTemplating.Interfaces, fügte ich einen Kommentar, dass an der Spitze der T4MVC.tt. Aber ja, es ist leicht zu übersehen.

Jetzt für den verwirrenden Teil: während jenen in der Tat Schnittstellen zu diesem anderen Namespace in Beta2 bewegt, das T4-Team hatte eine Veränderung des Herzens und beschlossen, sie wieder auf den ursprünglichen Namensraum zu vermeiden, um Verwechslungen zu bewegen. Also, wenn die nächste RC Build kommt, wird dieser Namensraum verschwunden sein.

Über die Notwendigkeit, Import DLLs, ich bin überrascht, dass Sie dies benötigen, wie es für mich ohne es funktioniert.

Abschließender Hinweis: in Schritt # 4, sollte es unbedenklich sein, wenn Sie hier speichern. Was passiert, ist, dass T4MVC Logik hat, die sich schmutzig hält, also auch wenn Sie speichern, werden Sie sehen es als nicht gespeicherte markiert (dies in der Einstellungsdatei kann ausgeschaltet werden).

Hope, das hilft!

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