public void Generate(File inputFile, File outputFile, CodeGeneratorArgs args) { var iTextTemplating = Package.GetGlobalService(typeof(STextTemplating)) as ITextTemplating; var t4Template = args.Template.Content; //TODO: Find a more optimal solution than concat string like this t4Template = t4Template.Replace("$(Code)", args.ModelSpecification.Code); t4Template = t4Template.Replace("$(MvvmFilePath)", inputFile.Path); t4Template = t4Template.Replace("$(TinyMVVMDir)", GetTinyMVVMInstallDirPath()); t4Template = t4Template.Replace("$(ViewModel.Name)", args.ViewModel.Name); t4Template = t4Template.Replace("$(CurrentNamespace)", outputFile.Parent.CurrentNamespace); var content = iTextTemplating.ProcessTemplate(outputFile.Path, t4Template, null, null); using (var fs = outputFile.NewFileStream()) { fs.Write(content); } }