Esempio n. 1
0
        private Assembly GenerateAssembly(Assembly coreAssembly, string sourceName, bool forceInMemoryGeneration)
        {
            var compiler        = new ScriptCompiler(forceInMemoryGeneration);
            var sharpDxAssembly = GetAssemblyFromCurrentDomain("SharpDX");
            var jsonAssembly    = GetAssemblyFromCurrentDomain("Newtonsoft.Json");
            var fixedAssemblies = new[] { "System.Core.dll", "System.Drawing.dll", coreAssembly.Location, sharpDxAssembly.Location, jsonAssembly.Location };

            var supplierAssemblies = new List <string>();

            if (Parent != null)
            {
                // extract dependency ops (supplier assemblies)
                var asmAndTypes = Utilities.GetAssembliesAndTypesOfCurrentDomain();
                foreach (var opEntry in Parent.Operators)
                {
                    var supplierOpPartDefinition = opEntry.Value.Item1.OperatorParts[0].Item2;
                    var supplierAssembly         = (from asmTypeTuple in asmAndTypes
                                                    let asm = asmTypeTuple.Item1
                                                              from type in asmTypeTuple.Item2
                                                              where SupplierAssembly.IsSupplierAssembly(type)
                                                              where asm.FullName.Contains("Func_ID" + supplierOpPartDefinition.ID + "_Version")
                                                              orderby File.GetCreationTime(asm.Location) descending // newest version first
                                                              select asm).FirstOrDefault();

                    if (supplierAssembly != null)
                    {
                        supplierAssemblies.Add(supplierAssembly.Location);
                    }
                    else
                    {
                        Logger.Error("MetaOperatorPart.GenerateAssembly: could not find supplierAssembly '{0}'.", supplierOpPartDefinition.Name);
                    }
                }
            }

            var dependencyAssemblies = fixedAssemblies.Concat(AdditionalAssemblies).Concat(supplierAssemblies);

            return(compiler.CompileScript(dependencyAssemblies, Script, sourceName));
        }