public bool GenerateandCompileLibrary(string moduleFolderPath, string moduleName, Dictionary <string, string> columnlist, Dictionary <string, string> updateList, bool isNewModule, bool autoIncrement) { string filePathInfo = Server.MapPath("/Modules/Admin/ModuleMaker/RawModule/library/ModuleInfo.cs"); string filePathController = Server.MapPath("/Modules/Admin/ModuleMaker/RawModule/library/ModuleController.cs"); string filePathDataProvider = Server.MapPath("/Modules/Admin/ModuleMaker/RawModule/library/ModuleDataProvider.cs"); string bigCode = string.Empty; string code = string.Empty; bool isCompiled = false; try { string libraryPath = Server.MapPath(moduleFolderPath + moduleName + "/SageFrame." + moduleName); ModuleHelper.CreateDirectory(libraryPath); string infoPath = libraryPath + "/Info"; ModuleHelper.CreateDirectory(infoPath); string destinationPath = infoPath + "/" + moduleName + "Info.cs"; using (StreamWriter sw = new StreamWriter(destinationPath)) { using (StreamReader rdr = new StreamReader(filePathInfo)) { code = rdr.ReadToEnd(); } StringBuilder html = new StringBuilder(); foreach (KeyValuePair <string, string> datatype in columnlist) { html.Append(ModuleHelper.SageProp(datatype.Value, datatype.Key)); } code = code.Replace("//properties", html.ToString()); string references = "using System;"; references = "using System;\nusing SageFrame.Web.Utilities;\nusing System.Collections.Generic;\n"; code = code.Replace("//references", references); code = code.Replace("ModuleName", moduleName); sw.Write(code); bigCode = code; } string contollerPath = libraryPath + "/Controller"; ModuleHelper.CreateDirectory(contollerPath); destinationPath = contollerPath + "/" + moduleName + "Controller.cs"; using (StreamWriter sw = new StreamWriter(destinationPath)) { using (StreamReader rdr = new StreamReader(filePathController)) { code = rdr.ReadToEnd(); } string controllerCode = ModuleHelper.ControllerCode(columnlist, moduleName).ToString(); code = code.Replace("//properties", controllerCode); code = code.Replace("ModuleName", moduleName); bigCode += "\n" + code; string references = "using System; using System.Collections.Generic;"; code = code.Replace("//references", references); sw.Write(code); } string dataProviderPath = libraryPath + "/DataProvider"; ModuleHelper.CreateDirectory(dataProviderPath); destinationPath = dataProviderPath + "/" + moduleName + "DataProvider.cs"; using (StreamWriter sw = new StreamWriter(destinationPath)) { using (StreamReader rdr = new StreamReader(filePathDataProvider)) { code = rdr.ReadToEnd(); } string dataProviderCode = ModuleHelper.DataProviderCode(columnlist, moduleName, updateList, autoIncrement).ToString(); code = code.Replace("//properties", dataProviderCode); code = code.Replace("ModuleName", moduleName); bigCode += "\n" + code; string references = "using System;\n using SageFrame.Web.Utilities;\n using System.Collections.Generic;\n"; code = code.Replace("//references", references); sw.Write(code); } } catch (Exception ex) { ShowMessage("", ex.ToString(), "", SageMessageType.Error); ProcessException(ex); } if (isNewModule) { CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp"); //CSharpCodeProvider csp = new CSharpCodeProvider(); // ICodeCompiler cc = provider.CreateCompiler(); CompilerParameters cp = new CompilerParameters(); string OutputAssembly = Path.Combine(Server.MapPath("/bin/"), "SageFrame." + moduleName + ".dll"); cp.OutputAssembly = OutputAssembly; cp.ReferencedAssemblies.Add("System.dll"); cp.ReferencedAssemblies.Add(AppDomain.CurrentDomain.BaseDirectory + "bin\\SageFrame.Common.dll"); cp.WarningLevel = 3; //cp.CompilerOptions = "/target:library /optimize"; cp.GenerateExecutable = false; cp.GenerateInMemory = false; System.CodeDom.Compiler.TempFileCollection tfc = new TempFileCollection(GetApplicationName, false); CompilerResults cr = new CompilerResults(tfc); cr = provider.CompileAssemblyFromSource(cp, bigCode); if (cr.Errors.Count > 0) { string error = string.Empty; foreach (CompilerError ce in cr.Errors) { error += ce.ErrorNumber + ": " + ce.ErrorText; } ShowMessage("", error, "", SageMessageType.Error); isCompiled = false; } else { isCompiled = true; } } return(isCompiled); }