private static void LoadEngines() { ZeusConfig config = ZeusConfig.Current; IZeusScriptingEngine engine; _engines = new Hashtable(); engine = new DotNetScript.DotNetScriptEngine(); _engines.Add(engine.EngineName, engine); engine = new MicrosoftScript.MicrosoftScriptEngine(); _engines.Add(engine.EngineName, engine); string path; Assembly assembly; foreach (string unparsedpath in config.ScriptingEngines) { if (unparsedpath.EndsWith("MicrosoftScriptingEngine.dll", StringComparison.CurrentCultureIgnoreCase) || unparsedpath.EndsWith("DotNetScriptingEngine.dll", StringComparison.CurrentCultureIgnoreCase)) { continue; } else { path = FileTools.ResolvePath(unparsedpath, true); assembly = DynamicAssemblyTools.LoadDynamicAssembly(path); if (assembly != null) { object[] tmp = DynamicAssemblyTools.InstantiateClassesByType(assembly, typeof(IZeusScriptingEngine)); for (int i = 0; i < tmp.Length; i++) { engine = tmp[i] as IZeusScriptingEngine; if (engine != null) { _engines.Add(engine.EngineName, engine); } } } else { throw new ZeusDynamicException(ZeusDynamicExceptionType.ScriptingEnginePluginInvalid, path); } assembly = null; } } }
private bool _ProcessArgs(string[] args) { //Process arguments, validate, fill variables _argmgr = new CmdInput(args); if (_argmgr.ShowHelp) { Console.Write(HELP_TEXT); return(false); } if (_argmgr.IntrinsicObjects.Count > 0) { ZeusConfig cfg = ZeusConfig.Current; foreach (ZeusIntrinsicObject io in _argmgr.IntrinsicObjects) { bool exists = false; foreach (ZeusIntrinsicObject existingObj in cfg.IntrinsicObjects) { if (existingObj.VariableName == io.VariableName) { exists = true; break; } } if (!exists) { cfg.IntrinsicObjects.Add(io); } } cfg.Save(); } if (_argmgr.IntrinsicObjectsToRemove.Count > 0) { ZeusConfig cfg = ZeusConfig.Current; foreach (ZeusIntrinsicObject io in _argmgr.IntrinsicObjectsToRemove) { cfg.IntrinsicObjects.Remove(io); } cfg.Save(); } if (_argmgr.IsValid) { if (_argmgr.EnableLog) { _log.IsLogEnabled = true; _log.FileName = _argmgr.PathLog; } _log.IsConsoleEnabled = !_argmgr.IsSilent; return(true); } else { Console.WriteLine(_argmgr.ErrorMessage); Console.Write("Use the \"-?\" switch to view the help."); return(false); } }
protected static void PopulateContextObjects(IZeusContext icontext) { ZeusContext context = icontext as ZeusContext; if (icontext != null) { ZeusConfig config = ZeusConfig.Current; context.SetIntrinsicObjects(ZeusFactory.IntrinsicObjectsArray); foreach (ZeusIntrinsicObject obj in config.IntrinsicObjects) { Type intrinsicObjectType = null; Assembly newassembly = null; object[] objs = null; if (!context.Objects.Contains(obj.VariableName) && !obj.Disabled) { newassembly = obj.Assembly; // First thing, try to create the type without knowing the assembly. /*try * { * intrinsicObjectType = Type.GetType(obj.ClassPath); * } * catch * { * intrinsicObjectType = null; * }*/ if (intrinsicObjectType == null) { try { if (obj.AssemblyPath != string.Empty) { string assemblyPath = obj.AssemblyPath; if (newassembly == null) { assemblyPath = FileTools.ResolvePath(assemblyPath, true); FileInfo finf = new FileInfo(assemblyPath); FileInfo callingfinf = new FileInfo(Assembly.GetCallingAssembly().Location); if (callingfinf.FullName == finf.FullName) { newassembly = Assembly.GetCallingAssembly(); } } if (newassembly == null) { throw new ZeusDynamicException(ZeusDynamicExceptionType.IntrinsicObjectPluginInvalid, "Invalid Assembly: " + assemblyPath); } else { intrinsicObjectType = newassembly.GetType(obj.ClassPath); } } else { intrinsicObjectType = Type.GetType(obj.ClassPath); } } catch (ZeusDynamicException zex) { context.Objects[obj.VariableName] = zex.Message; } } if (intrinsicObjectType != null) { try { if (intrinsicObjectType != null) { if (newassembly != null) { objs = DynamicAssemblyTools.InstantiateClassesByType(newassembly, newassembly.GetType(obj.ClassPath)); } else { objs = new object[1]; objs[0] = DynamicAssemblyTools.InstantiateClassByType(intrinsicObjectType); } } else { throw new ZeusDynamicException(ZeusDynamicExceptionType.IntrinsicObjectPluginInvalid, "Invalid Type: " + obj.ClassPath); } if (objs != null) { if (objs.Length > 0) { context.Objects[obj.VariableName] = objs[0]; } } } catch (ZeusDynamicException zex) { context.Objects[obj.VariableName] = zex.Message; } } } } } }