protected void compileSource(string fileName, out string strOutput, out string strErrors, out int intWarnings, out int intErrors) { strErrors = ""; strOutput = ""; intErrors = 0; intWarnings = 0; CompilerParameters loParameters = new CompilerParameters(); loParameters.ReferencedAssemblies.Add("System"); loParameters.ReferencedAssemblies.Add("System.Data"); loParameters.ReferencedAssemblies.Add("System.Drawing"); loParameters.ReferencedAssemblies.Add("System.Web"); loParameters.ReferencedAssemblies.Add(AppDomain.CurrentDomain.BaseDirectory+"/bin/MySql.Data"); CodeDomProvider loCompiler = CodeDomProvider.CreateProvider("csharp"); CompilerResults loCompiled; try { loCompiled = loCompiler.CompileAssemblyFromFile(loParameters, AppDomain.CurrentDomain.BaseDirectory + "/app_code/" + fileName + ".cs"); foreach (string str in loCompiled.Output) { strOutput += str + "
/"; } foreach (CompilerError ex in loCompiled.Errors) { if (ex.IsWarning) { intWarnings = intWarnings + 1; strErrors += "(" + ex.Line.ToString() + "," + ex.Column.ToString() + ") warning " + ex.ErrorNumber + ": " + ex.ErrorText + "
"; } else { intErrors = intErrors + 1; strErrors += "(" + ex.Line.ToString() + "," + ex.Column.ToString() + ") error " + ex.ErrorNumber + ": " + ex.ErrorText + "
"; } } if (!loCompiled.Errors.HasErrors) File.Copy(loCompiled.PathToAssembly, AppDomain.CurrentDomain.BaseDirectory + "/bin/" + fileName + ".dll", true); } catch (Exception ex) { strErrors = ex.Message; intErrors = 1; } }