public T4PreprocessingResult Preprocess(IT4File file) { Logger.Verbose("Preprocessing a file"); var psiSourceFile = file.PhysicalPsiSourceFile.NotNull(); var projectFile = psiSourceFile.ToProjectFile().NotNull(); var solution = file.GetSolution(); var contextFreeTree = psiSourceFile.BuildT4Tree(); var location = new T4FileLocation(solution.GetComponent <ProjectModelViewHost>().GetIdByItem(projectFile)); try { string message = new T4CSharpPreprocessedCodeGenerator(contextFreeTree, solution).Generate().RawText; solution.Locks.ExecuteOrQueueEx(solution.GetLifetime(), "T4 template preprocessing", () => { using (WriteLockCookie.Create()) { TargetFileManager.SavePreprocessResults(file, message); } }); return(new T4PreprocessingResult(location, true, new List <T4BuildMessage>())); } catch (T4OutputGenerationException e) { var message = BuildMessageConverter.ToT4BuildMessages(e.FailureDatum.AsEnumerable()); return(new T4PreprocessingResult(location, false, message)); } }
public static T4CSharpCodeGenerationResult GenerateCodeBehind([NotNull] IT4File file) { var solution = file.GetSolution(); var rootTemplateKindProvider = solution.GetComponent <IT4TemplateKindProvider>(); var graph = solution.GetComponent <IT4FileDependencyGraph>(); var root = graph.FindBestRoot(file.PhysicalPsiSourceFile.NotNull()); T4CSharpCodeBehindGenerationInfoCollector collector; T4CSharpCodeBehindIntermediateConverter converter; var rootTemplateKind = rootTemplateKindProvider.GetTemplateKind(root); if (rootTemplateKind == T4TemplateKind.Preprocessed) { bool isRoot = root == file.PhysicalPsiSourceFile; collector = new T4PreprocessedCSharpCodeBehindGenerationInfoCollector(solution, root, graph, isRoot); var templateDataProvider = new T4PreprocessedClassNameProvider(root); converter = new T4CSharpCodeBehindIntermediateConverter(file, templateDataProvider, isRoot); } else { converter = new T4CSharpExecutableCodeBehindIntermediateConverter(file); collector = new T4CSharpCodeBehindGenerationInfoCollector(solution); } return(converter.Convert(collector.Collect(file))); }
public static T4CSharpCodeGenerationResult GenerateExecutableCode([NotNull] IT4File file) { var solution = file.GetSolution(); var manager = solution.GetComponent <IT4ReferenceExtractionManager>(); var collector = new T4CSharpCodeGenerationInfoCollector(solution); var converter = new T4CSharpExecutableIntermediateConverter(file, manager); return(converter.Convert(collector.Collect(file))); }
public static T4CSharpCodeGenerationResult GeneratePreprocessedCode([NotNull] IT4File file) { var solution = file.GetSolution(); var collector = new T4CSharpPreprocessedCodeGenerationInfoCollector(solution); file.AssertContainsNoIncludeContext(); var nameProvider = new T4PreprocessedClassNameProvider(file.PhysicalPsiSourceFile.NotNull()); var converter = new T4CSharpRealIntermediateConverter(file, nameProvider); return(converter.Convert(collector.Collect(file))); }