void StartBrowserProcess(MoonlightDebuggerStartInfo dsi, int assignedDebugPort)
        {
            if (browser != null)
            {
                throw new InvalidOperationException("Browser already started");
            }

            var firefoxProfile = PropertyService.Get <string> ("Moonlight.Debugger.FirefoxProfile", DEFAULT_PROFILE);

            CreateFirefoxProfileIfNecessary(firefoxProfile);

            var psi = new ProcessStartInfo("firefox")
            {
                Arguments              = string.Format(" -no-remote -P '{0}' '{1}'", firefoxProfile, dsi.Url),
                UseShellExecute        = false,
                RedirectStandardOutput = true,
                RedirectStandardError  = true,
            };
            var args = (Mono.Debugging.Soft.SoftDebuggerRemoteArgs)dsi.StartArgs;

            psi.EnvironmentVariables.Add("MOON_SOFT_DEBUG",
                                         string.Format("transport=dt_socket,address={0}:{1}", args.Address, assignedDebugPort));

            browser = Process.Start(psi);
            ConnectOutput(browser.StandardOutput, false);
            ConnectOutput(browser.StandardError, true);

            browser.EnableRaisingEvents = true;
            browser.Exited += delegate {
                EndSession();
            };
        }
		void StartBrowserProcess (MoonlightDebuggerStartInfo dsi)
		{
			if (browser != null)
				throw new InvalidOperationException ("Browser already started");
			
			var firefoxProfile = PropertyService.Get<string> ("Moonlight.Debugger.FirefoxProfile", DEFAULT_PROFILE);
			CreateFirefoxProfileIfNecessary (firefoxProfile);
			
			var psi = new ProcessStartInfo ("firefox") {
				Arguments = string.Format (" -no-remote -P '{0}' '{1}'", firefoxProfile, dsi.Url),
				UseShellExecute = false,
				RedirectStandardOutput = true,
				RedirectStandardError = true,
			};
			psi.EnvironmentVariables.Add ("MOON_SOFT_DEBUG",
				string.Format ("transport=dt_socket,address={0}:{1}", dsi.Address, dsi.DebugPort));
			
			browser = Process.Start (psi);
			ConnectOutput (browser.StandardOutput, false);
			ConnectOutput (browser.StandardError, true);
			
			browser.EnableRaisingEvents = true;
			browser.Exited += delegate {
				EndSession ();
			};
		}
		public DebuggerStartInfo CreateDebuggerStartInfo (ExecutionCommand command)
		{
			var cmd = (MoonlightExecutionCommand) command;
			var msi = new MoonlightDebuggerStartInfo (cmd.AppName, cmd.Url);
			SoftDebuggerEngine.SetUserAssemblyNames (msi, cmd.UserAssemblyPaths);
			return msi;
		}
        public DebuggerStartInfo CreateDebuggerStartInfo(ExecutionCommand command)
        {
            var cmd = (MoonlightExecutionCommand)command;
            var msi = new MoonlightDebuggerStartInfo(cmd.AppName, cmd.Url);

            SoftDebuggerEngine.SetUserAssemblyNames(msi, cmd.UserAssemblyPaths);
            return(msi);
        }