Окно вывода
Для записи в окне вывода «Общие» в Visual Studio, вам необходимо сделать следующее:
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
Если, однако, вы хотите написать в специальном окне, это то, что вам нужно сделать:
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
Подробная информация о IVsOutputWindow и IVsOutputWindowPane можно найти на сайте MSDN.
Список ошибок
Для добавления элементов в список ошибок, то IVsSingleFileGenerator
есть вызов метода void Generate(...)
который имеет параметр типа IVsGeneratorProgress
. Этот интерфейс имеет метод void GeneratorError()
, который позволяет сообщать об ошибках и предупреждениях в список ошибок 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);
...
}
...
}
Детали GeneratorError() можно найти на MSDN.
Почему вы не работаете на стандартном выходе? – avakar
написать сообщение Console.Write не дает мне ничего в окне вывода. –