ventana de salida
escribir en la ventana de salida "General" en Visual Studio, tiene que 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 hay que 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
detalles sobre IVsOutputWindow y IVsOutputWindowPane se pueden encontrar en MSDN.
Lista de errores
Para añadir elementos a la lista de errores, el IVsSingleFileGenerator
tiene una llamada al método 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.
¿Por qué la escritura en salida estándar no funciona para usted? – avakar
escribiendo un mensaje a Console.Write no me da nada en la ventana de salida. –