olegsych / T4Toolbox

http://olegsych.github.io/T4Toolbox
MIT License
257 stars 111 forks source link

Create files in multi projects #53

Open ASantos007 opened 7 years ago

ASantos007 commented 7 years ago

Hello :)

I want to create multiple files through multi projects as faster as it is possible. My code (in Generator.tt) is:

`foreach (var xmlFile in xmlFiles) { var xml = XDocument.Load(xmlFile);

            XmlSerializer serializer = new XmlSerializer(typeof(Entity));
            Entity result = null;
            using (TextReader reader = new StringReader(xml.ToString()))
            {
                result = (Entity)serializer.Deserialize(reader);
            }

            this.entityTemplate.entity = result;
            this.entityTemplate.Output.Project = @"C:\@Work\MdaPoc\MdaPoc\MdaPoc.Entities\MdaPoc.Entities.csproj";
            this.entityTemplate.RenderToFile(String.Format(@"gen\{0}.cs", result.Name));

            this.modelTemplate.entity = result;
            this.modelTemplate.Output.Project = @"C:\@Work\MdaPoc\MdaPoc\MdaPoc.Models\MdaPoc.Models.csproj";
            this.modelTemplate.RenderToFile(String.Format(@"gen\{0}ViewModel.cs", result.Name));

            this.modelMapperTemplate.entity = result;
            this.modelMapperTemplate.Output.Project = @"C:\@Work\MdaPoc\MdaPoc\MdaPoc.MVC\MdaPoc.MVC.csproj";
            this.modelMapperTemplate.RenderToFile(String.Format(@"Models\gen\{0}Mapper.cs", result.Name));

            this.dataBaseTableTemplate.entity = result;
            this.dataBaseTableTemplate.Output.Project = @"C:\@Work\MdaPoc\MdaPoc\MdaPoc.Database\MdaPoc.Database.sqlproj";
            this.dataBaseTableTemplate.RenderToFile(String.Format(@"Tables\gen\{0}.Table.sql", result.Name));

            this.dataBaseProcedureTemplate.entity = result;
            this.dataBaseProcedureTemplate.Output.Project = @"C:\@Work\MdaPoc\MdaPoc\MdaPoc.Database\MdaPoc.Database.sqlproj";
            this.dataBaseProcedureTemplate.RenderToFile(String.Format(@"Procedures\gen\{0}.Procedure.sql", result.Name));
        }`

Are there any better way to create those all templates (entityTemplate, modelTemplate, modelMapperTemplate, dataBaseTableTemplate, dataBaseProcedureTemplate)? Create them asynchronously, for exemple?

olegsych commented 6 years ago

I think what you have in the example is the "right way". There is no async support in the T4Toolbox API today.