示例#1
0
        static int Main(string[] args)
        {
            var exename = Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0]);

            switch (exename)
            {
            case "isc":
            case "isc32":
                args = PrefixArgs(args, "-nologo");
                break;
            }

            if (args.Length > 0 && args[0] == "-profile")
            {
                const string PROFILER_GUID = "{9E2B38F2-7355-4C61-A54F-434B7AC266C0}";

                if (ExecuteRegsvr32(false, true))
                {
                    ProcessStartInfo psi;

                    // create a process executor
                    psi = new ProcessStartInfo(typeof(Program).Assembly.Location);

                    // ----- SET THE CLR ENVIRONMENT VARIABLES -------------------

                    // set the COR_PROFILER env var. This indicates to the CLR which COM object to
                    // instantiate for profiling.
                    if (psi.EnvironmentVariables.ContainsKey("COR_PROFILER") == true)
                    {
                        psi.EnvironmentVariables["COR_PROFILER"] = PROFILER_GUID;
                    }
                    else
                    {
                        psi.EnvironmentVariables.Add("COR_PROFILER", PROFILER_GUID);
                    }

                    ////// set the Cor_Enable_Profiling env var. This indicates to the CLR whether or
                    ////// not we are using the profiler at all.  1 = yes, 0 = no.
                    if (psi.EnvironmentVariables.ContainsKey("COR_ENABLE_PROFILING") == true)
                    {
                        psi.EnvironmentVariables["COR_ENABLE_PROFILING"] = "1";
                    }
                    else
                    {
                        psi.EnvironmentVariables.Add("COR_ENABLE_PROFILING", "1");
                    }

                    // ----- RUN THE PROCESS -------------------


                    string[] argargs = new string[args.Length - 1];
                    Array.Copy(args, 1, argargs, 0, argargs.Length);

                    psi.Arguments       = string.Join(" ", argargs);
                    psi.UseShellExecute = false;

                    try
                    {
                        Process p = Process.Start(psi);
                        //p.PriorityBoostEnabled = true;

                        p.WaitForExit();

                        return(p.ExitCode);
                    }
                    finally
                    {
                        ExecuteRegsvr32(false, false);
                    }
                }
                else
                {
                    // remove -profile
                    string[] argargs = new string[args.Length - 1];
                    Array.Copy(args, 1, argargs, 0, argargs.Length);

                    args = argargs;
                }
            }

            if (Array.IndexOf(args, "--remoting-server") >= 0)
            {
                Host.Start();
                args = Array.FindAll(args, x => x != "--remoting-server");
            }
            //Encoding oi = Console.InputEncoding;
            Encoding oo = Console.OutputEncoding;

            //Debugger.Launch();

            try
            {
                //Console.InputEncoding = Encoding.UTF8;
                Console.OutputEncoding = Encoding.UTF8;
                return(IronSchemeConsoleHost.Execute(args));
            }
            finally
            {
                Console.OutputEncoding = oo;
                //Console.InputEncoding = oi;
            }
        }
示例#2
0
        static int Main(string[] args)
        {
#if !NETCOREAPP2_1_OR_GREATER
            if ((Array.IndexOf(args, "-profile")) >= 0)
            {
                const string PROFILER_GUID = "{9E2B38F2-7355-4C61-A54F-434B7AC266C0}";

                if (ExecuteRegsvr32(false, true))
                {
                    ProcessStartInfo psi = new ProcessStartInfo(typeof(Program).Assembly.Location);
                    psi.EnvironmentVariables["COR_PROFILER"]         = PROFILER_GUID;
                    psi.EnvironmentVariables["COR_ENABLE_PROFILING"] = "1";

                    // ----- RUN THE PROCESS -------------------
                    args = Array.FindAll(args, x => x != "-profile");

                    psi.Arguments       = string.Join(" ", args);
                    psi.UseShellExecute = false;

                    try
                    {
                        Process p = Process.Start(psi);

                        p.WaitForExit();

                        return(p.ExitCode);
                    }
                    finally
                    {
                        ExecuteRegsvr32(false, false);
                    }
                }
                else
                {
                    // remove -profile
                    args = Array.FindAll(args, x => x != "-profile");
                }
            }
#endif
            var exename = Path.GetFileNameWithoutExtension(Environment.GetCommandLineArgs()[0]);

            switch (exename)
            {
            case "isc":
            case "isc32":
            case "ironscheme":
                args = PrefixArgs(args, "-nologo");
                break;
            }

            args = Args(args, "--show-loaded-libraries", () => Builtins.ShowImports = true);
            args = ParseIncludes(args);

            Encoding oo = System.Console.OutputEncoding;
#if !NETCOREAPP2_1_OR_GREATER
            EnableMulticoreJIT();
#endif
            try
            {
                System.Console.OutputEncoding = Encoding.UTF8;
#if NETCOREAPP2_1_OR_GREATER
                Builtins.Exact(1);
#endif

                return(IronSchemeConsoleHost.Execute(args));
            }
            finally
            {
                System.Console.OutputEncoding = oo;
            }
        }
示例#3
0
 static int Main(string[] args)
 {
     return(IronSchemeConsoleHost.Execute(args));
 }