T4MVC kann nicht mit VS2010 und ASP.NET MVC 2 arbeiten

8

Ich versuche, die T4MVC-Vorlagen zu meinem Projekt hinzuzufügen, aber ich habe einige Probleme. Ich ging zu Codeplex und heruntergeladen die neueste Version von T4MVC und nach den Anweisungen, die ich gerade kopiert habe die beiden Dateien T4MVC.tt und T4MVC.Settings.t4 in den Stamm meiner Webanwendung.

Sofort habe ich folgende Fehler bekommen:

Von T4MVC.cs (generierte Datei):

Ein Namespace kann nicht direkt Elemente wie Felder oder Methoden enthalten

Von T4MVC.tt (Vorlage zum Codegenerieren):

Kompilierende Umwandlung: Der Typ oder Namespace-Name 'ITextTemplatingEngineHost' konnte nicht gefunden werden (fehlt eine using-Direktive oder eine Assembly-Referenz?)

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

%Vor%

Ich fand diesen Beitrag < Das deutet darauf hin, dass man einfach wieder aufbauen muss, aber diese Lösung löst mein Problem nicht - es ändert nichts an der Sache. Was soll ich tun?

    
Tomas Lycken 15.12.2009, 09:59
quelle

3 Antworten

16

OK, ich habe es herausgefunden. Das Problem war, dass Microsoft anscheinend seit der letzten Version des T4MVC-Pakets den Speicherort der ITextTemplateHost -Schnittstelle geändert hat, sodass ich einen anderen Namespace importieren musste. Außerdem werden die .dll -Dateien mit diesen Namespaces nicht in das ASP.NET MVC-Standardvorlagenprojekt importiert. Das habe ich getan, damit es funktioniert:

  1. Fügen Sie Verweise auf die folgenden .dll-Dateien hinzu (Suchpfade auf meinem Computer 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 beide in T4MVC.tt importiert werden (folgen Sie einfach der Syntax, die bereits in der Datei vorhanden ist).

    • Microsoft.VisualStudio.TextTemplating

    • Microsoft.VisualStudio.TextTemplating.Interfaces

  3. Löschen Sie alle generierten Codedateien (sie werden angezeigt, wenn Sie im Solution Explorer T4MVC.tt erweitern).

  4. Projekt erstellen Wenn keine Dateien generiert werden, öffnen Sie T4MVC.tt , bearbeiten Sie etwas, nicht speichern und erstellen Sie. Das sollte es tun!

Tomas Lycken 15.12.2009, 10:22
quelle
3

ADDENDUM - ASP.NET MVC 3 RTM

Wenn Sie ASP.NET MVC 3 RTM gerade installiert haben, können Sie als Addendum zu diesem Problem ähnliche Probleme in Projekten feststellen, die mit einem der MVC 3 Release Candidates erstellt wurden.

Zu lösen:

Stellen Sie sicher, dass Sie T4MVC.2.6.40 oder höher mit NuGet installiert haben.

Dh, installieren Sie T4MVC mit Tools & gt; & gt; Bibliothekspaket verwalten. Geben Sie in der Konsole Folgendes ein:

%Vor%

und dann:

%Vor%

um die neueste Version zu erhalten.

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

%Vor%

Öffnen Sie die Datei, machen Sie sie schmutzig (z. B. indem Sie den Kommentar mit der verzerrten Linie löschen) und schließen Sie dann OHNE SPAREN !!! Siehe David Ebbos Antwort, t4mvc.tt MUSS schmutzig sein!

Kompilieren Sie sich und gehen Sie ein Leben.

    
awrigley 14.01.2011 15:45
quelle
2

Scheint du hast es funktioniert, aber lassen Sie mich hier ein paar Punkte hinzufügen.

Über die Notwendigkeit, Microsoft.VisualStudio.TextTemplating.Interfaces zu importieren, habe ich einen Kommentar dazu oben auf T4MVC.tt hinzugefügt. Aber ja, es ist leicht zu verpassen.

Nun zum verwirrenden Teil: Während diese Schnittstellen tatsächlich in Beta2 in den anderen Namensraum verschoben wurden, hatte das T4-Team eine Veränderung des Herzens und entschied sich, sie wieder in den ursprünglichen Namensraum zu verschieben, um Verwirrung zu vermeiden. Wenn der nächste RC-Build herauskommt, ist dieser Namensraum weg.

Über die Notwendigkeit, DLLs zu importieren, bin ich überrascht, dass Sie das brauchen, wie es für mich ohne es funktioniert.

Schlussbemerkung: In Schritt # 4 sollte es harmlos sein, wenn Sie hier speichern. Was passiert, ist, dass T4MVC eine Logik hat, die sich selbst verschmutzt. Selbst wenn Sie speichern, sehen Sie es als nicht gespeichert (dies kann in der Einstellungsdatei deaktiviert werden).

Hoffe, das hilft!

    
David Ebbo 19.12.2009 19:34
quelle