Ejemplo n.º 1
0
        private IEnumerable <CompilerResults> CompileResourcesByLanguage(IEnumerable <IGrouping <RazorCodeLanguage, string> > resourcesGroupedByLanguage)
        {
            var compilerResults = new List <CompilerResults>();

            foreach (var resourceNameGroup in resourcesGroupedByLanguage.ToArray())
            {
                RazorCodeLanguage    language            = resourceNameGroup.Key;
                string               languageDisplayName = language.GetType().Name;
                IEnumerable <string> resourceNames       = resourceNameGroup;

                Log.Debug("Compiling {0} {1} resources", resourceNames.Count(), languageDisplayName);

                _compilationResultMessage.EmbeddedRazorViews.Add(languageDisplayName, resourceNames);

                var codeCompileUnits = GenerateCode(resourceNames).ToArray();

                _compilationResultMessage.CodeCompileUnits.Add(languageDisplayName, codeCompileUnits);

                var compilerResult = CompileGeneratedCode(language, codeCompileUnits);

                compilerResults.Add(compilerResult);
            }

            _compilationResultMessage.CompilerResults = compilerResults;

            return(compilerResults);
        }
Ejemplo n.º 2
0
        private CompilerResults CompileGeneratedCode(RazorCodeLanguage language, IEnumerable <CodeCompileUnit> codeCompileUnits)
        {
            Log.Debug("Compiling generated code for {0}", language.GetType().Name);

            CodeDomProvider codeProvider = GetCodeProvider(language);

            var compilerParameters = new CompilerParameters();

            if (compilerParameters.GenerateInMemory)
            {
                Log.Debug("Generating assemblies in memory");
            }
            else
            {
                Log.Debug("Output assembly: {0}", compilerParameters.OutputAssembly);
            }

            var compilerResults =
                codeProvider.CompileAssemblyFromDom(compilerParameters, codeCompileUnits.ToArray());

            return(compilerResults);
        }