Exemple #1
0
        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));
            }
        }
Exemple #2
0
        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)));
        }