В Visual Studio 2012 с MVC 4 простой способ (установить пакет Nuget) дает вам неполную настройку, поскольку пакет Nuget крайне устарел (последний раз обновлялся в 2011 году - возможно, в день его создания).
Вы должны использовать эквивалент ответа Фрэнсиса Шанахана, но вместо этого путь для копирования информации (64-разрядный):
C: \ Program Files (x86) \ Microsoft Visual Studio \ 11.0\ Common7 \ IDE \ ItemTemplates \ CSharp \ Web \ MVC 4 \ CodeTemplates
Вы:
Добавить ссылку на Microsoft.Web.Infrastructure, которую можно найти вСборки> Расширения.
Скопируйте эту папку CodeTemplates (включая саму папку) в корневой каталог вашего проекта и включите ее в проект
Пока игнорируйте ошибки компилятора (например, не удается найти MvcTextTemplateHost)
Просмотрите свойства каждого из добавленных файлов и удалите текст в свойстве «Пользовательский инструмент» каждого из них.После этого стрелка раскрытия рядом с каждым файлом исчезнет (поскольку файл больше не будет генерироваться на месте)
Сохранить все и сборка - ошибки компилятора исчезли
Если ошибки компилятора не исчезнут - особенно если вы видите ошибку в сгенерированном файле .cs, который Visual Studio не может найти, а файл .tt - закройте Visual Studio, вытритевременная папка и снова откройте решение.В одном случае я дошел до перезапуска до того, как проблема прояснилась.Это было вызвано сгенерированным файлом .cs из шаблона .tt, который Visual Studio все еще пытался автоматически сгенерировать для кода.
Кроме того, имена файлов .tt немного сбивают с толку - вот какони отображают:
GUI:
Пустой контроллер MVCMVC контроллер с чтением / записью действий и представлений, используя Entity FrameworkMVC контроллер с пустыми операциями чтения / записиПустой контроллер APIКонтроллер API с действиями чтения / записи, используя Entity FrameworkКонтроллер API с пустыми действиями чтения / записи
Карта файлов CodeTemplates \ AddController соответственно:
Controller.ttControllerWithContext.ttController.ttApiController.ttApiControllerWithContext.ttApiController.tt
В Controller.tt и ApiController.tt есть оператор if, который обрабатывает функции с / без действий чтения / записи.
Для представлений именование интуитивно понятно, за исключением этого List.tt создает Index.cshtml, а Empty.tt используется для любого представления, кроме Create / Delete / Details / Edit / Index.
Этот вопрос охватывает свойства, которые можно использовать в шаблонах .tt * 1048.*.
.tt - это шаблоны Microsoft T4. Синтаксис шаблона T4 .