Я только что закончил создавать шаблоны T4 для автоматического создания реализаций свойств для моих классов ViewModel (см. Здесь: Автоматическая реализация INotifyPropertyChanged посредством генерации кода T4? ).
В настоящее время мне нужно, чтобы проект содержал ".tt" -файлы в решении, где я хочу сгенерировать реализации свойств.
Таким образом, решение, например, содержит три проекта: T4Generation, SomeProjectWithViewModels, AnotherProjectWithViewModels.
Затем при вызове шаблона T4 в T4Generation он просматривает все проекты в решении, находит все классы ViewModel и генерирует файл C #, содержащий реализации свойств для конкретной ViewModel в соответствующем проекте.
Пример:
"SomeProjectWithViewModels.SomeViewModel.cs"
public partial class SomeViewModel : BaseViewModel
{
private string p_SomeProperty;
}
создает файл «SomeProjectWithViewModels.SomeViewModel.Properties.cs»
public partial class SomeViewModel
{
public string SomeProperty
{
get { ... }
set { ... }
}
}
Теперь у меня есть вопрос, есть ли возможность создать сборку (например, "T4Generation.dll"), на которую можно ссылаться в любом решении, позволяя хост-решению каким-либо образом вызывать процесс генерации кода.
Например, я бы начал новое решение "SomeSolution.sln" с проектами "SomeApplication.exe", "SomeClassLibrary.dll", а в SomeApplication я бы сослался на "T4Generation.dll", а в процессе сборки SomeApplication - поколение T4 будет вызван.
Возможно ли это?