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