Как указал Роберт, код Джона выдаст исключение, когда ActivePane отсутствует. Если есть активная панель, она будет использовать любую активную панель.
Одна проблема, с которой я столкнулся в примере с Робертом, связана с тем, где вы создаете панель. В моем случае это метод Exec, он будет создавать несколько панелей с одинаковым именем при каждом запуске.
Включая мой пример того, как я справился с этой проблемой. Довольно просто, просто сначала проверьте наличие окна ...
Window window = _applicationObject.Windows.Item( EnvDTE.Constants.vsWindowKindOutput );
OutputWindow outputWindow = ( OutputWindow )window.Object;
OutputWindowPane outputWindowPane = null;
for ( uint i = 1; i <= outputWindow.OutputWindowPanes.Count; i++ )
{
if ( outputWindow.OutputWindowPanes.Item( i ).Name.Equals( OUTPUT_WINDOW_NAME , StringComparison.CurrentCultureIgnoreCase ) )
{
outputWindowPane = outputWindow.OutputWindowPanes.Item( i );
break;
}
}
if ( outputWindowPane == null )
outputWindowPane = outputWindow.OutputWindowPanes.Add( OUTPUT_WINDOW_NAME );
outputWindowPane.OutputString( "Message" );