Я только что закончил создавать шаблоны 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. .
Это возможно?