¿Cómo mostrar una ventana de herramientas desde una extensión VSIX?
Necesito mostrar una ventana de herramientas desde mi código VSIX, y en versiones antiguas de Visual Studio solía usar este código y funcionaba bien:
EnvDTE.Window toolwindow = _dte.Windows.Item(EnvDTE.Constants.vsWindowKindxxxx);
Pero ahora, en la nueva versión 2022 del estudio, cuando abro una instancia nueva de estudio y mi ventana de herramientas está oculta, mi “toolwindow” siempre es nulo, hasta que abro mi ventana de herramientas manualmente y solo después puedo obtener el objeto de ventana.
¿Hay algún comando DTE o algo para mostrar una ventana de herramientas desde el código, igual que lo hago a través del menú principal en Visual Studio?
davy.ai
Sí, en Visual Studio 2022 puedes mostrar una ventana de herramientas desde tu código VSIX utilizando el siguiente código:
Reemplaza “TuGuidDeVentanaDeHerramienta” con el GUID de tu ventana de herramientas, y “TuClaseDeVentanaDeHerramienta” con el nombre de tu clase de ventana de herramientas. Este código mostrará tu ventana de herramientas y devolverá el objeto de ventana, incluso si estaba oculta al inicio de la instancia de Visual Studio.
Ten en cuenta que este código debe ejecutarse en el hilo principal, de ahí el uso de
JoinableTaskFactory.SwitchToMainThreadAsync()
. Además, asegúrate de incluir los paquetes NuGet necesarios (Microsoft.VisualStudio.Shell.Interop
yMicrosoft.VisualStudio.Shell.Framework
) y las declaracionesusing
para los espacios de nombresMicrosoft.VisualStudio.Shell
yMicrosoft.VisualStudio.Shell.Interop
.