Автоматически получать все ссылки на сборки в T4 - PullRequest
1 голос
/ 25 января 2011

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

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

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

Кажется, это было возможно до VS2010 , возможно ли повторно реализовать / восстановить это поведение?

1 Ответ

1 голос
/ 26 января 2011

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

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

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

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

...