Ну, нашел грязный обходной путь.
Хотелось бы получить лучшее решение / подход, если у кого-то есть совет?
Публикация моего процесса, которая может быть полезна кому-то еще.
Использовал директиву шаблона, чтобы поместить мои шаблоны и включить
шаблоны в режиме отладки, например
<# @ template language = "C #" <strong>debug = "true" hostspecific = "true" #>
Открыл% TEMP%, чтобы посмотреть на сгенерированные файлы
изменено) сразу после получения ошибки преобразования компиляции.
Произведен поиск отсутствующей / дублированной сборки / используемых классов.
Найдено, что оба «включенных» шаблона имеют одинаковую ссылку, например
<# @ include file = "MyHelperTemplate.ttinclude" #>
и:
<# @ include file = "EF.Utility.CS.ttinclude" #>
Открыл папку включения для нестандартного включения, которое было
вызывая конфликт с моим собственным
.. \ Common7 \ IDE \ Extensions \ Microsoft \ Инструменты Entity Framework \ Шаблоны \ Включает
Открыл этот файл, удалил хлопотный импорт
<# @ import namespace = "EnvDTE" #>
Сохранено с новым именем в той же папке и обновленными ссылками, указывающими на эту новую версию, например
<# @ include file = "EF.Utility.CS.Custom.ttinclude" #>
Поместите требуемый импорт в «родительские» шаблоны и удалите из
шаблон «включить». В моем случае это было:
<# @ import namespace = "EnvDTE" #>
Теперь все работает нормально, никаких проблем нет, нет дублированного импорта и все необходимые сборки ссылаются правильно.
Я уверен, что есть гораздо более изощренный способ справиться с повторным использованием кода T4, который полностью снимает эту проблему. Сначала я попытался импортировать свою собственную пользовательскую сборку с помощниками для шаблонов, но у меня возникла классическая проблема с заблокированными библиотеками, когда я затем попытался создать собственную библиотеку классов.
Кажется T4 Toolbox имеет решение этой проблемы с пользовательской директивой VolatileAssembly , и популярно, но выглядит немного излишним для моих довольно простых потребностей. Может быть, когда у меня будет больше времени.