visual tutorial temas studio para linea fuente español configurar code cambiar brackethighlighter ajuste visual-studio vsx customtool

visual-studio - tutorial - visual studio code español



¿Cómo escribo en la ventana de resultados de Visual Studio en mi herramienta personalizada? (5)

Ventana de salida

Para escribir en la ventana de resultados "General" en Visual Studio, debe hacer lo siguiente:

IVsOutputWindow outWindow = Package.GetGlobalService( typeof( SVsOutputWindow ) ) as IVsOutputWindow; Guid generalPaneGuid = VSConstants.GUID_OutWindowGeneralPane; // P.S. There''s also the GUID_OutWindowDebugPane available. IVsOutputWindowPane generalPane; outWindow.GetPane( ref generalPaneGuid , out generalPane ); generalPane.OutputString( "Hello World!" ); generalPane.Activate(); // Brings this pane into view

Sin embargo, si desea escribir en una ventana personalizada, esto es lo que debe hacer:

IVsOutputWindow outWindow = Package.GetGlobalService( typeof( SVsOutputWindow ) ) as IVsOutputWindow; // Use e.g. Tools -> Create GUID to make a stable, but unique GUID for your pane. // Also, in a real project, this should probably be a static constant, and not a local variable Guid customGuid = new Guid("0F44E2D1-F5FA-4d2d-AB30-22BE8ECD9789"); string customTitle = "Custom Window Title"; outWindow.CreatePane( ref customGuid, customTitle, 1, 1 ); IVsOutputWindowPane customPane; outWindow.GetPane( ref customGuid, out customPane); customPane.OutputString( "Hello, Custom World!" ); customPane.Activate(); // Brings this pane into view

Los detalles sobre IVsOutputWindow y IVsOutputWindowPane se pueden encontrar en MSDN.

Lista de errores

Para agregar elementos a la lista de errores, el IVsSingleFileGenerator tiene un método llamado void Generate(...) que tiene un parámetro del tipo IVsGeneratorProgress . Esta interfaz tiene un método void GeneratorError() que le permite informar errores y advertencias a la lista de errores de Visual Studio.

public class MyCodeGenerator : IVsSingleFileGenerator { ... public void Generate( string inputFilePath, string inputFileContents, string defaultNamespace, out IntPtr outputFileContents, out int output, IVsGeneratorProgress generateProgress ) { ... generateProgress.GeneratorError( false, 0, "An error occured", 2, 4); ... } ... }

Los detalles de GeneratorError() se pueden encontrar en MSDN.

Estoy escribiendo una herramienta personalizada y actualmente la tengo haciendo lo que quiero en cuanto a funcionalidad. Me gustaría poder escribir en Visual Studio si algo sale mal. (Código incorrectamente formateado o lo que sea).

¿Hay algún estándar para esto? En este momento, básicamente, puedo forzar la falla de la herramienta y Visual Studio pone una advertencia de que lo ha hecho. Me gustaría una categoría en la ventana de resultados con los mensajes resultantes que deseo enviar. También podría vivir con una tarea / advertencia más descriptiva en la ventana Lista de errores.


Hay otra forma de utilizar Marshal.GetActiveObject para capturar una instancia DTE2 ejecución.

Primera referencia EnvDTE y envdte80. Esto funciona actualmente en VisualStudio 2012, no he probado los otros todavía.

using System; using System.Runtime.InteropServices; using EnvDTE; using EnvDTE80; internal class VsOutputLogger { private static Lazy<Action<string>> _Logger = new Lazy<Action<string>>( () => GetWindow().OutputString ); private static Action<string> Logger { get { return _Logger.Value; } } public static void SetLogger( Action<string> logger ) { _Logger = new Lazy<Action<string>>( () => logger ); } public static void Write( string format, params object[] args) { var message = string.Format( format, args ); Write( message ); } public static void Write( string message ) { Logger( message + Environment.NewLine ); } private static OutputWindowPane GetWindow() { var dte = (DTE2) Marshal.GetActiveObject( "VisualStudio.DTE" ); return dte.ToolWindows.OutputWindow.ActivePane; } }



Si desea que aparezca algo en la ventana de resultados, debe proceder de la salida estándar. Para hacer esto, su aplicación debe estar vinculada como una aplicación de "consola". Establezca el indicador / SUBSYSTEM: CONSOLE en la página de propiedades del proyecto, en Linker / System establezca la propiedad SubSystem en CONSOLE.

Una vez que tenga su salida en la ventana, si incluye el texto "Error:" aparecerá como un error, o si configura "Advertencia:" aparecerá como una advertencia. Si su texto de error comienza con una ruta / nombre de archivo, seguido de un número de línea entre paréntesis, el IDE lo reconocerá como un error "seleccionable" y lo llevará automáticamente a la línea de falla.


utilizar System.Diagnostics.Debugger.Message