Exemplo n.º 1
0
    public static bool reload()
    {
        var oldeva = Evaluator;

        Evaluator = MonoScript.New(new Reporter(), typeof(Script), (oldeva == null && Patchwork.settings.cacheScripts)?Dir.cache:null);
        Output    = Evaluator.tw;
        Error     = Evaluator.tw;
        Assembly sass = null;

        try
        {
            sass = ScriptEntry.CompileScripts();
        } catch (Exception ex)
        {
            print(ex);
        }
        if (sass == null)
        {
            print("Script reload failed; trying to retain old script base.");
            Evaluator.Dispose();
            Evaluator = oldeva;
            return(false);
        }
        oldeva?.Dispose();
        var newbase = sass.GetType("ScriptEnv");

        if (newbase != null)
        {
            Evaluator.InteractiveBaseClass = newbase;
        }
        if (!firstRun)
        {
            firstRun = true;
            MBProxy.Attach();
            ScriptEntry.RunDLLs();
        }
        print("Scripts reloaded");
        return(true);
    }