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); }
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); }