Есть ли способ программно запускать текстовые шаблоны 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-документе. Это может показаться не таким уж большим делом, но это заставляет систему контроля версий проверять все сгенерированные файлы, и если у вас много документов, преобразование может на самом деле занять довольно много времени. Спасибо за любую помощь.