Как получить ссылку на выходной поток, который записывает в окно вывода «Visual Studio»? - PullRequest
5 голосов
/ 16 февраля 2010

У меня есть сторонняя библиотека .NET, которая позволяет выводить некоторую ключевую диагностическую информацию в экземпляр TextWriter. Я хотел бы, чтобы эта информация выводилась в окно вывода Visual Studio 2008 в режиме отладки и игнорировалась, если не в режиме отладки. Есть ли способ получить ссылку на выходной поток, который использует это окно вывода, чтобы я мог создать TextWriter, который использует его?

Чтобы использовать консоль для вывода, я могу сделать ...

foo.LogTo(Console.Out);

С помощью этого интерфейса я могу получить информацию журнала, отправленную в окно вывода?

Ответы [ 2 ]

1 голос
/ 16 февраля 2010

Вы можете создать свой собственный производный класс TextWriter, используя OutputDebugString API или использовать Debug.WriteLine () для пересылки данных.

1 голос
/ 16 февраля 2010

Visual Studio допускает запись сообщений в окно вывода через класс Debug, начиная с .NET 1.1 .

С учетом вышесказанного достаточно легко создать собственную реализацию TextWriter, которая просто перенаправляет вызовы в соответствующие методы класса Debug. Когда содержимое записывается на ваш TextWriter, вы вызываете метод класса Debug, и он появляется в окне вывода.

Кроме того, поскольку вы выполняете вызовы класса Debug, когда вы не находитесь в режиме отладки, вывод не будет выводиться (из-за атрибута Conditional в методах класса Debug).

...