/// <summary> /// Restarts Visual Studio. /// </summary> public static async Task <bool> RestartAsync() { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); IVsShell4 shell = await GetRequiredServiceAsync <SVsShell, IVsShell4>(); ((IVsShell3)shell).IsRunningElevated(out bool elevated); __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal; int hr = shell.Restart((uint)type); return(ErrorHandler.Succeeded(hr)); }
private static void Execute(bool forceElevated, IVsShell4 shell) { ThreadHelper.ThrowIfNotOnUIThread(); if (forceElevated) { shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated); } else { ((IVsShell3)shell).IsRunningElevated(out var elevated); __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal; shell.Restart((uint)type); } }
/// <summary> /// Restarts the IDE. /// </summary> /// <param name="forceElevated">Forces the IDE to start back up elevated. /// If <see langword="false"/>, it restarts in the same mode it is currently running in. /// </param> public async Task RestartAsync(bool forceElevated = false) { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); IVsShell4 shell = (IVsShell4)await VS.Services.GetShellAsync(); if (forceElevated) { shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated); } else { ((IVsShell3)shell).IsRunningElevated(out bool elevated); __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal; shell.Restart((uint)type); } }
private static void Execute(RestartType restartType) { ThreadHelper.ThrowIfNotOnUIThread(); _openInSafeMode = false; switch (restartType) { case RestartType.Normal: ((IVsShell3)_shell).IsRunningElevated(out var elevated); __VSRESTARTTYPE type = elevated ? __VSRESTARTTYPE.RESTART_Elevated : __VSRESTARTTYPE.RESTART_Normal; _shell.Restart((uint)type); break; case RestartType.Elevated: _shell.Restart((uint)__VSRESTARTTYPE.RESTART_Elevated); break; case RestartType.Safemode: _openInSafeMode = true; _dte.ExecuteCommand("File.Exit"); break; } }
private int Restart(__VSRESTARTTYPE vsRestartMode) { return(_shell4.Restart((uint)vsRestartMode)); }