visual studio gratis descargar c# visual-studio visual-studio-2012

c# - gratis - visual studio express 2012 descargar



Cambio de "tema de color" dentro de una extensión de Visual Studio (2)

Estoy escribiendo una extensión de Visual Studio en C # que espero que cambie el tema de color dependiendo de la hora del día (después de la puesta del sol, se aplicará el tema oscuro). Al amanecer, se aplicará el tema azul / claro según las preferencias de los usuarios. ).

Soy capaz de cambiar el tema de color utilizando el WriteableSettingsStore expuesto por un objeto ShellSettingsManager . Cuando ejecuto el siguiente código, el tema cambia después de reiniciar Visual Studio.

var settingsManager = new ShellSettingsManager(this); var writeableUserStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings); writeableUserStore.SetString("General", "CurrentTheme", GuidList.guidDarkTheme);

Lo que preferiría es que el tema se actualice automáticamente: he intentado utilizar las funciones UpdateWindow y RedrawWindow de la API de User32, pero la ventana no se vuelve a cargar.

Entonces, la pregunta es: ¿Cómo puedo "volver a dibujar" Visual Studio después de cambiar la propiedad CurrentTheme en el registro?


Aquí está la forma más sencilla de hacerlo:

Visión general:

  1. Utilice la función "Importar y exportar configuración" para crear dos archivos: DarkTheme.vssettings y LightTheme.vssettings
  2. Invoque programáticamente el comando Tools.ImportandExportSettings para importar esos archivos en el momento adecuado.

Detalles:

Para crear los dos archivos de configuración:

  1. Inicie Visual Studio y establezca el tema en "Light" a través de la interfaz de usuario
  2. En el menú Herramientas, seleccione "Importar y exportar configuraciones ..."
  3. En el asistente, seleccione "Exportar la configuración del entorno seleccionado" y haga clic en "Siguiente"
  4. En la sección "¿Qué configuración desea exportar?" página, deseleccione todo excepto "Opciones / Fuentes y colores" y haga clic en "Siguiente"
  5. Nombre este archivo "Light.vssettings" y guárdelo en una ubicación conocida.
  6. Repita los pasos del 1 al 5 para el tema "Oscuro", nombrando el archivo "Dark.vssettings".

Para importar estos archivos mediante programación, utilice DTE.ExecuteCommand con el parámetro "/ import" como este:

Agregue una referencia a EnvDTE.dll si aún no lo tiene.

var dte = GetService(typeof(EnvDTE._DTE)) as EnvDTE.DTE; dte.ExecuteCommand("Tools.ImportandExportSettings", @"/import:""C:/yourpath/LightTheme.vssettings""");

Espero que eso ayude.


ShellSettingsManager permite acceder y modificar la configuración de Visual Studio, pero solo en el registro de Windows. Visual Studio no recogerá los cambios que realice hasta que se reinicie porque VS lee la configuración del registro solo cuando se inicia. Así que este es el enfoque equivocado.

Para cambiar las configuraciones y aplicarlas sin requerir un reinicio, tendrá que usar DTE2.Properties como se explica here . El siguiente fragmento de código muestra todas las configuraciones que se pueden cambiar mediante programación desde la página Entorno / General (aquí es donde puede cambiar el tema):

EnvDTE.Properties generalProps = dte2Obj.Properties["Environment", "General"]; for (int i = 1; i <= generalProps.Count; ++i) { System.Diagnostics.Debug.WriteLine( generalProps.Item(i).Name + ": " + generalProps.Item(i).Value); }

Por defecto en VS2013, este código producirá el siguiente resultado:

AnimationSpeed: 5 RichClientExperienceOptions: 65535 WindowMenuContainsNItems: 10 CloseButtonActiveTabOnly: True UseTitleCaseOnMenu: False AutoAdjustExperience: True Animations: True AutohidePinActiveTabOnly: False ShowStatusBar: True MRUListContainsNItems: 10

Todas estas configuraciones se pueden cambiar y VS aplicará los cambios de inmediato. El problema es que no hay ninguna propiedad que le permita cambiar el tema. Por eso creo que no se puede hacer.