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