public static bool EvalDataSourceScript(this Report report, MonoReports.Services.CompilerService compiler)
        {
            if(!assemblyResolverHandlerSet) {

                AppDomain
                    .CurrentDomain
                        .AssemblyResolve+=  delegate(object sender, ResolveEventArgs args) {
                            Assembly myAssembly = null;
                            string asmName = args.Name.Substring(0,	args.Name.IndexOf(',')) +".dll";

                            string assemblyPath = report.References.FirstOrDefault(asm => asm.EndsWith(asmName));
                            if( !string.IsNullOrEmpty(assemblyPath) && System.IO.File.Exists(assemblyPath))
                                return  Assembly.LoadFrom(assemblyPath);
                            assemblyPath = System.IO.Path.Combine(report.AlternativeReferencedAssembliesPath,asmName);
                            if(System.IO.File.Exists(assemblyPath))
                                return  Assembly.LoadFrom(assemblyPath);

                            assemblyPath = System.IO.Path.Combine(Assembly.GetExecutingAssembly().Location,asmName);
                            if(System.IO.File.Exists(assemblyPath))
                                return  Assembly.LoadFrom(assemblyPath);

                            return  myAssembly;
                        };
                assemblyResolverHandlerSet = true;
            }

            string code = report.DataScript;

            object result = null;
            string message = null;
            bool res = false;
            StringBuilder stb = new StringBuilder();
            stb.AppendLine("using Newtonsoft.Json.Linq;");
            stb.AppendLine("using System.Linq;");
            stb.AppendLine("using MonoReports.Model.Data;");

            foreach (string s in report.Usings) {
                stb.Append("using ");
                stb.Append(s);
                stb.AppendLine(";");
            }
            string usings = stb.ToString();

            compiler.References.Clear();
            compiler.References.Add("Newtonsoft.Json.dll");
            compiler.References.Add("MonoReports.Model.dll");

            foreach (string r in report.References) {
                string toAdd = r;
                if (!System.IO.File.Exists (r))
                    if(!string.IsNullOrEmpty (report.AlternativeReferencedAssembliesPath))
                        toAdd = System.IO.Path.Combine (report.AlternativeReferencedAssembliesPath,System.IO.Path.GetFileName (r));

                if (!compiler.References.Contains (toAdd))
                    compiler.References.Add (toAdd);
            }

            if( compiler.Evaluate (out result, out message , new string[]{usings,code}, new object[]{ report })  ) {

                report.FillFieldsFromDataSource();

                updateReportWithParamaters(report);

            }else {
                Console.Error.WriteLine(message);
            }
            return res;
        }