2015-03-13 3 views
3

Я пытаюсь создать генератор для файлов cs через командную строку. Я хочу использовать T4, потому что я не знаю другого способа генерировать файлы и легко перемещать их. Проблема, с которой я сталкиваюсь, заключается в попытке передать пользовательские входные данные в файлы T4.Могу ли я создать файл t4 с пользовательским вводом?

Для примера пользователя в моей программе будет ввести свое имя

Bob

Моего шаблон T4 Я хочу выход быть

Hello Bob

Я могу показаться, чтобы не передавать данные к нему, если я не написал его в текстовый файл и не прочитал его. Есть ли другой способ, которым я мог бы это сделать? В какой-то момент мне нужно, чтобы он обрабатывал коллекции атрибутов, которые могли бы быть больно правильно читать в текстовом файле.

+0

Вы не запускать ' texttransform /? ', чтобы увидеть, что доступны аргументы командной строки? Вы не видели ничего о передаче переменных и значений через командную строку? Разве мы не мужчины? Есть ли только один Линкольн? Случайный вопрос усиливается? – Will

+0

Я на самом деле строю весь проект в C#, поэтому я не использую texttransform –

+0

https://github.com/scy0846/NetOnJets –

ответ

4

Используя T4 parameter directive, вы можете передавать значения из домена приложения в свой шаблон T4.

Создать параметр:

<#@ parameter type="Full.TypeName" name="ParameterName" #> 

Положите его в шаблон:

<#@ template language="C#" #> 
<#@ parameter type="System.String" name="MyUserName" #> 
<# Console.Write(MyUserName) #> 

заселить из кода:

// Get a service provider – how you do this depends on the context: 
IServiceProvider serviceProvider = dte; // or dslDiagram.Store, for example 
// Get the text template service: 
ITextTemplating t4 = serviceProvider.GetService(typeof(STextTemplating)) 
                as ITextTemplating; 
ITextTemplatingSessionHost host = t4 as ITextTemplatingSessionHost; 
// Create a Session in which to pass parameters: 
host.Session = host.CreateSession(); 
// Add parameter values to the Session: 
session["MyUserName"] = "Bob"; 
// Process a text template: 
string result = t4.ProcessTemplate("MyTemplateFile.t4", 
            System.IO.File.ReadAllText("MyTemplateFile.t4")); 

Another helpful link

+0

ok Я могу работать с этим благодарю вас. –

Смежные вопросы