Есть ли способ программно запускать текстовые шаблоны T4 из кода? Я создаю собственный язык для конкретного домена, и я хотел бы, чтобы связанные текстовые шаблоны запускались каждый раз, когда пользователь сохраняет. В настоящее время это то, что я делаю в модели DSL:
protected override void OnDocumentSaved(EventArgs e)
{
IVsCommandWindow commandWindow = (IVsCommandWindow)this.ServiceProvider.GetService(typeof(IVsCommandWindow));
if (commandWindow != null)
{
commandWindow.ExecuteCommand("TextTransformation.TransformAllTemplates");
}
base.OnDocumentSaved(e);
}
Это работает, но имеет очень раздражающий побочный эффект. Если в проекте есть несколько DSL-документов, каждый со своим текстовым шаблоном, они будут все запущены, а не только те, на которые повлияли изменения в данном DSL-документе. Это может показаться не таким уж большим делом, но это заставляет систему управления версиями проверять все сгенерированные файлы, и если у вас много документов, преобразование может занять довольно много времени. Спасибо за любую помощь.