Dans Visual Studio 2012 avec MVC 4, la méthode simple (installer le package Nuget) vous donne une configuration incomplète, car le package Nuget est lamentablement obsolète (dernière mise à jour en 2011 - peut-être le jour de sa création).
Vous devez utiliser l'équivalent de la réponse de Francis Shanahan, mais au lieu du chemin à copier (64 bits) :
C:\Program Files (x86)\Microsoft Visual Studio\11.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 4\CodeTemplates
Vous :
-
Ajoutez une référence à Microsoft.Web.Infrastructure, que vous pouvez trouver dans Assemblies > Extensions.
-
Copiez ce dossier CodeTemplates (y compris le dossier lui-même) à la racine de votre projet et incluez-le dans le projet
-
Ignorez les erreurs du compilateur pour le moment (comme ne peut pas trouver MvcTextTemplateHost)
-
Parcourez les propriétés de chacun des fichiers ajoutés et supprimez le texte dans la propriété "Outil personnalisé" de chaque fichier. Lorsque vous le faites, la flèche d'expansion à côté de chaque fichier disparaîtra (car le fichier ne sera plus généré sur place)
-
Enregistrez tout et compilez - les erreurs du compilateur ont disparu
Si les erreurs du compilateur ne disparaissent pas - surtout si vous voyez une erreur dans un fichier .cs généré que Visual Studio ne peut pas trouver, et un fichier .tt - fermez Visual Studio, nettoyez votre dossier temporaire et rouvrez la solution. Dans un cas, je suis allé jusqu'à redémarrer avant que le problème ne se résolve. C'était causé par un fichier .cs généré à partir d'un modèle .tt que Visual Studio essayait toujours de générer automatiquement du code pour.
De plus, les noms des fichiers .tt sont un peu confus - voici comment ils se mappent :
GUI :
Contrôleur MVC vide
Contrôleur MVC avec actions de lecture/écriture et vues, utilisant Entity Framework
Contrôleur MVC avec des actions de lecture/écriture vides
Contrôleur API vide
Contrôleur API avec des actions de lecture/écriture, utilisant Entity Framework
Contrôleur API avec des actions de lecture/écriture vides
Les fichiers de CodeTemplates\AddController se mappent respectivement :
Controller.tt
ControllerWithContext.tt
Controller.tt
ApiController.tt
ApiControllerWithContext.tt
ApiController.tt
Il y a une instruction if dans Controller.tt et ApiController.tt qui gère la fonctionnalité avec/sans actions de lecture/écriture.
Pour les vues, le nommage est intuitif sauf que List.tt crée Index.cshtml, et Empty.tt est utilisé pour toute vue autre que Create/Delete/Details/Edit/Index.
Cette question couvre les propriétés que vous pouvez utiliser dans les modèles .tt.
Les modèles .tt sont des modèles Microsoft T4. Syntaxe des modèles T4.