Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Visual Studio 15 SP 1

20.06.16 12:06
Re: Visual Studio 15 SP 1
 
Murr патриот
Murr
в ответ Murr 16.06.16 12:43

Добавил пару толоозок для работы с шаблонами - 'T4Toolbox' & 'tangible T4'.

По ощущениям - стало существенно медленнее. Особенно чувствуется на загрузке.

У меня SSD и в обычном варианте все летает. Сейчас, при загрузке, весьма тяжко.


Есть и положительные изменения - появилась подсветка синтаксиса в шаблонах

и возможность работать с параметрами в Свойствах. От последнего толку пока

мало - шаблоны получают параметры из сессии, которая лежит в АппХосте и

которую Я на сейчас не использую. генерируемый для параметров код так же

привязан к использованию АппХоста... но тут его можно подменить.


Слепил псевдосессию и передал через нее параметры. Код стал выглядеть/...

хммм... интересно:


TParams param = Load(fi); // загрузка файла с определениями


// установка параметров

TExecutionContext.Instance[Primitive.TNamespaceDefinition.ID] = param.NamespaceDef;

TExecutionContext.Instance[Primitive.TClassDefinition.ID] = param.ClassDef;

//TExecutionContext.Instance[Primitive.TFieldsList.ID] = param.Fields;

TExecutionContext.Instance["Fields"] = param.Fields; // передача - по имени переменной


// инициализация параметров в ДЛЛке

Code.Templates.Base.TBase.ExecutionContext = TExecutionContext.Instance;

Code.Templates.Base.TBase.FileManager = new Code.FileManager.TFileManager();


// генерация - осталось 2 строки на шаблон

TFieldNames fn = new TFieldNames();

//fn.Namespace = param.NamespaceDef;

//fn.Class = param.ClassDef;

//fn.Fields = param.Fields;

fn.Generate();

//generated = fn.TransformText();

//filename = GenerationPath + param.ClassDef.Name + ".FieldNames.cs";

//File.Delete(filename);

//File.AppendAllText(filename, generated);


TRow row = new TRow();

//row.Namespace = param.NamespaceDef;

//row.Class = param.ClassDef;

//row.Fields = param.Fields;

row.Generate();

//generated = row.TransformText();

//filename = GenerationPath + param.ClassDef.Name + ".Row.cs";

//File.Delete(filename);

//File.AppendAllText(filename, generated);


TSubset ss = new TSubset();

//ss.Namespace = param.NamespaceDef;

//ss.Class = param.ClassDef;

//ss.Fields = param.Fields;

ss.Generate();

//generated = ss.TransformText();

//filename = GenerationPath + param.ClassDef.Name + ".Subset.cs";

//File.Delete(filename);

//File.AppendAllText(filename, generated);


TTable tb = new TTable();

//tb.Namespace = param.NamespaceDef;

//tb.Class = param.ClassDef;

//tb.Fields = param.Fields;

tb.Generate();

//generated = tb.TransformText();

//filename = GenerationPath + param.ClassDef.Name + ".Table.cs";

//File.Delete(filename);

//File.AppendAllText(filename, generated);


Но надо дорабатывать - активно использую подшаблоны - туда еще не передаются параметры.

Проблем две - надо научится из конструктора получать ссылку на переменную (ссылку на файл

куда добавлйать текст) с классе которой создается подшаблон и подумать как, через сессию,

передавать параметры при паралельном выполнении кода... НУ да это не сегодня...


P.S. Кто бы мне сказал где поменять код генерируемый для шаблона и параметров... Где

компилятор шаблонов - Я заню, вопрос в том как поменять его выдачу... безум

 

Перейти на