2011-01-25 3 views
1

Возможно ли иметь шаблон T4, который автоматически подбирает все ссылки на сборку (и их зависимости) родительского проекта?Автоматическое получение всех ссылок на сборку в T4

Все примеры, которые я видел, используют < # @ assembly #> или < # @ VolatileAssembly #>, чтобы вручную определять ссылки, поэтому, к примеру, мне приходится ссылаться на System.Core как в проекте, так и в шаблоне. Я хочу избежать этого дублирования: я хочу только определить ссылки в проекте, а не шаблон.

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

Кажется this was possible before VS2010, возможно ли повторное внедрение/восстановление этого поведения?

ответ

1

T4 действительно подобрал зависимости проекта до VS2010. Мы сознательно решили отделить ссылки на время исполнения от ссылок на runtime, чтобы отделить эти проблемы и улучшить поддержку с использованием .Net 4.0 в шаблонах, даже если они были использованы для генерации кода для проекта .Net 2.0.

Вы можете сделать что-то похожее на pre-VS2010, создав настраиваемый процессор директив, который использовал Host как ServiceProvider для получения DTE, а затем пошел по решению/проектам, чтобы найти их ссылки. Однако было бы неплохо работать.

Мне интересно узнать, что связывает зависимости вашего проекта с зависимостями, которые требуется вашему шаблону. Например, для проекта, использующего WinForms, обычно не требуется WinForms в его шаблоне кода. Основы, такие как System.Core, обычно находятся в обоих, но этот общий набор не часто кажется большим, поэтому дублирование не является значительной проблемой.

У вас есть большой общий набор?

+0

Я пытаюсь создать легкий DSL (текстовый тип, а не графический тип, используемый в инструментах SDK DSL) с использованием T4, и мне приходится анализировать и использовать типы используемых выражений (которые могут быть любыми тип, на который делается ссылка в проекте), так что да, это большой общий набор ... –

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