2016-03-01 2 views
1

Это должно быть что-то очень просто. Я очень расстроен. Я не могу найти, где это происходит.Как перезапустить t4-шаблоны с расширением t4 вместо tt

Я только что установил EntityFramework 6.1.3, а также EntityFramework.CodeTemplates.CSharp также 6.1.3.

Я хочу изменить шаблоны и запустить их, чтобы сначала выбрать Transfor All T4 Templates в меню Build, а затем я щелкнул правой кнопкой мыши и temptaltes Context.cs.t4 и EntityType.cs.t4, но параметр «Run Custom Инструмент "нигде не встречается.

Я посмотрел в свойства файлов и попытался установить свойство „Пользовательский инструмент“ обоих файлы „TextTemplatingFileGenerator“, и как только я, что я получаю эти ошибки компиляции:

Компиляция преобразования: Метаданные файл «EntityFramework» не может быть найден .
Компиляция преобразования: файл метаданных «Microsoft.Data.Entity.Design» не найден.

На образцах EF, что я вытекающие из this site после установки шаблонов он упоминает о том, что обратный процесс инженера может работать снова, но для того, чтобы сделать это, по-видимому, я бы удалить все файлы с ×, которые были созданный ранее. Это действительно необходимо?

Моя конечная цель - модифицировать вещи, чтобы сущности создавались в отдельном проекте, но все найденные мной решения, очевидно, говорят о выполнении шаблонов t4, чего я не смог сделать.

Благодарим за помощь.

+0

Это должно быть '.tt' atleast в VS2013. '.t4' не является известным расширением файла. Попробуйте переименовать расширение с '.t4' на' .tt'. Он должен предоставить вам возможность запускать шаблон. – vendettamit

+0

@vendettamit - Я забыл упомянуть об этом на вопрос. Я уже пробовал это, и я получаю те же самые ошибки компиляции, о которых упоминалось. Моя версия VS - 2013 Обновление 5 –

ответ

1

Ошибка, которую вы получаете, поскольку шаблон по умолчанию, установленный через nugets, не знает инструменты IDE для инфраструктуры сущностей. Так что вам просто нужно изменить следующие значения заголовка в Context.cs.tt:

<#@ assembly name="Microsoft.Data.Entity.Design" #> 
<#@ assembly name="EntityFramework" #> 

к:

<#@ assembly name="%VS120COMNTOOLS%..\IDE\EntityFramework.dll" #> 
<#@ assembly name="%VS120COMNTOOLS%..\IDE\Microsoft.Data.Entity.Design.dll" #> 

Теперь вы получите законную ошибку, модель параметра равно нуль.

Update

Вы пропустили 3-й шаг из статьи, которую вы имеете в виду. Для запуска Reverse Engineer code first вам необходимо установить расширение EF power tool. После установки выполните следующие действия:

Выберите проект -> правой кнопкой мыши -> под EntityFramework -> перепроектируете код первой. Выберите свою базу данных, на которой вы хотите запустить пользовательские шаблоны.

Эти шаблоны EF6 являются параметризованными шаблонами, которые вы не можете просто запустить их, щелкнув правой кнопкой мыши -> запустить собственный инструмент. Я думаю, что это причина, по которой расширение файла шаблона переименовывается в .t4, потому что оно относится только к инструменту EF.

Update 2

Я изменил EFPowerTool extension для поддержки создания структуры каталогов пространства имен на основе. Создал тягу request на проекте EF 6.x в кодексе. Кроме того, я создал experimental branch на GitHub для целей тестирования. (Там, конечно, есть место для исправления/усиление, которые могут быть добавлены и испытаны перед отправкой обновленного запроса нагрузочного)

Вы можете загрузить установщик расширения, с помощью предлагаемого исправления из here. Надеюсь, это поможет вам решить проблему на данный момент.

+0

Итак, теперь я получаю сообщение об ошибке, но он все еще не решил проблему, хотя теперь я могу изменить расширение и выбрать опцию «Запустить пользовательский инструмент», как это сделать избавиться от этого, чтобы код выполнялся правильно? –

+0

Теперь вам нужно предоставить значения параметрам, определенным в шаблоне. Проверьте эту ссылку http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef-power-tools/, если это поможет. – vendettamit

+0

@SergioRomero Я обновил свой ответ. – vendettamit

Смежные вопросы