Fenêtre Sortie (kit de développement Visual Studio SDK)
La fenêtre de Sortie est un ensemble de volets de texte auxquels vous pouvez écrire et lire. Visual Studio définit ces volets prédéfinis : Générer, par lequel les projets communiquent des messages sur les builds, et Général, que Visual Studio communique les messages sur l'environnement de développement intégré (IDE) (IDE). Les projets reçoivent une référence au volet de Générer automatiquement par les méthodes d'interface d' IVsBuildableProjectCfg , et des offres de Visual Studio d'accès direct au volet de Général via le service d' SVsGeneralOutputWindowPane . Outre les volets prédéfinis, vous pouvez créer et gérer vos propres composants personnalisés.
Vous pouvez contrôler la fenêtre de Sortie directement via les interfaces d' IVsOutputWindow et d' IVsOutputWindowPane . L'interface d' IVsOutputWindow , qui est offert par le service d' SVsOutputWindow , définit des méthodes pour créer, extraire, et les volets de la fenêtre de destruction de Sortie . L'interface d' IVsOutputWindow définit des méthodes pour afficher des volets, masquer des volets, et manipuler leur texte. Une autre manière de contrôler la fenêtre de Sortie est parmi les objets d' OutputWindow et d' OutputWindowPane dans le modèle d'objet Automation Visual Studio. Ces objets encapsulent presque toutes les fonctionnalités des interfaces d' IVsOutputWindow et d' IVsOutputWindowPane . En outre, OutputWindow et les objets d' OutputWindowPane ajoutez une fonctionnalité de niveau supérieur pour simplifier énumérer les volets de fenêtre de Sortie et pour extraire le texte des volets.
Exemple
Description
Cet exemple montre comment créer un nouveau volet de la fenêtre de Sortie à l'aide de l'interface d' IVsOutputWindow .
Code
Private Function CreatePane(ByVal paneGuid As Guid, ByVal title As String, ByVal visible As Boolean, ByVal clearWithSolution As Boolean) As IVsOutputWindowPane
Dim output As IVsOutputWindow = DirectCast(GetService(GetType(SVsOutputWindow)), IVsOutputWindow)
Dim pane As IVsOutputWindowPane
' Create a new pane.
output.CreatePane(paneGuid, title, Convert.ToInt32(visible), Convert.ToInt32(clearWithSolution))
' Retrieve the new pane.
output.GetPane(paneGuid, pane)
Return pane
End Function
IVsOutputWindowPane CreatePane(Guid paneGuid, string title,
bool visible, bool clearWithSolution)
{
IVsOutputWindow output =
(IVsOutputWindow)GetService(typeof(SVsOutputWindow));
IVsOutputWindowPane pane;
// Create a new pane.
output.CreatePane(
ref paneGuid,
title,
Convert.ToInt32(visible),
Convert.ToInt32(clearWithSolution));
// Retrieve the new pane.
output.GetPane(ref paneGuid, out pane);
return pane;
}
Exemple
Description
Cet exemple montre comment créer un volet de la fenêtre de Sortie à l'aide de l'objet pour OutputWindow .
Code
Private Function CreatePane(ByVal title As String) As OutputWindowPane
Dim dte As DTE2 = DirectCast(GetService(GetType(DTE)), DTE2)
Dim panes As OutputWindowPanes = dte.ToolWindows.OutputWindow.OutputWindowPanes
Try
' If the pane exists already, return it.
Return panes.Item(title)
Catch generatedExceptionName As ArgumentException
' Create a new pane.
Return panes.Add(title)
End Try
End Function
OutputWindowPane CreatePane(string title)
{
DTE2 dte = (DTE2)GetService(typeof(DTE));
OutputWindowPanes panes =
dte.ToolWindows.OutputWindow.OutputWindowPanes;
try
{
// If the pane exists already, return it.
return panes.Item(title);
}
catch (ArgumentException)
{
// Create a new pane.
return panes.Add(title);
}
}
Commentaires
Bien que la collection d' OutputWindowPanes permet de récupérer un volet de la fenêtre de Sortie par son titre, les titres de volet ne sont pas garanti. Lorsque vous doutez de l'unicité d'un titre, utilisez la méthode d' GetPane pour récupérer le volet approprié par son GUID.
Exemple
Description
Cet exemple montre comment supprimer un volet de la fenêtre de Sortie .
Code
Private Sub DeletePane(ByVal paneGuid As Guid)
Dim output As IVsOutputWindow = DirectCast(GetService(GetType(SVsOutputWindow)), IVsOutputWindow)
output.DeletePane(paneGuid)
End Sub
void DeletePane(Guid paneGuid)
{
IVsOutputWindow output =
(IVsOutputWindow)GetService(typeof(SVsOutputWindow));
output.DeletePane(ref paneGuid);
}
Exemple
Description
Cet exemple montre comment supprimer un volet de la fenêtre de Sortie , étant donné un objet d' OutputWindowPane .
Code
Private Sub DeletePane(ByVal pane As OutputWindowPane)
Dim output As IVsOutputWindow = DirectCast(GetService(GetType(SVsOutputWindow)), IVsOutputWindow)
Dim paneGuid As New Guid(pane.Guid)
output.DeletePane(paneGuid)
End Sub
void DeletePane(OutputWindowPane pane)
{
IVsOutputWindow output =
(IVsOutputWindow)GetService(typeof(SVsOutputWindow));
Guid paneGuid = new Guid(pane.Guid);
output.DeletePane(ref paneGuid);
}
Exemple
Description
Cet exemple montre comment récupérer le volet prédéfini de Général de la fenêtre de Sortie .
Code
Private Function GetGeneralPane() As IVsOutputWindowPane
Return DirectCast(GetService(GetType(SVsGeneralOutputWindowPane)), IVsOutputWindowPane)
End Function
IVsOutputWindowPane GetGeneralPane()
{
return (IVsOutputWindowPane)GetService(
typeof(SVsGeneralOutputWindowPane));
}
Exemple
Description
Cet exemple montre comment analyser un message de génération standard pour les erreurs, puis ajoute un élément à la fenêtre d' Erreur , le cas échéant, avant que le message est envoyé à la fenêtre de Sortie .
Code
Private Sub OutputTaskItemStringExExample(ByVal buildMessage As String, ByVal buildPane As IVsOutputWindowPane, ByVal launchPad As IVsLaunchPad)
Dim priority As UInteger() = New UInteger(0) {}, lineNumber As UInteger() = New UInteger(0) {}
Dim fileName As String() = New String(0) {}, taskItemText As String() = New String(0) {}
Dim taskItemFound As Integer() = New Integer(0) {}
' Determine whether buildMessage contains an error.
launchPad.ParseOutputStringForTaskItem(buildMessage, priority, fileName, lineNumber, taskItemText, taskItemFound)
' If buildMessage contains an error, send it to both the
' Error window and the Output window; otherwise, send it
' to the Output window only.
If taskItemFound(0) <> 0 Then
buildPane.OutputTaskItemStringEx(buildMessage, DirectCast(priority(0), VSTASKPRIORITY), VSTASKCATEGORY.CAT_BUILDCOMPILE, Nothing, 0, fileName(0), _
lineNumber(0), taskItemText(0), Nothing)
Else
buildPane.OutputString(buildMessage)
End If
buildPane.OutputString(vbLf)
End Sub
void OutputTaskItemStringExExample(string buildMessage,
IVsOutputWindowPane buildPane, IVsLaunchPad launchPad)
{
uint[] priority = new uint[1], lineNumber = new uint[1];
string[] fileName = new string[1], taskItemText = new string[1];
int[] taskItemFound = new int[1];
// Determine whether buildMessage contains an error.
launchPad.ParseOutputStringForTaskItem(
buildMessage,
priority,
fileName,
lineNumber,
taskItemText,
taskItemFound);
// If buildMessage contains an error, send it to both the
// Error window and the Output window; otherwise, send it
// to the Output window only.
if (taskItemFound[0] != 0)
{
buildPane.OutputTaskItemStringEx(
buildMessage,
(VSTASKPRIORITY)priority[0],
VSTASKCATEGORY.CAT_BUILDCOMPILE,
null,
0,
fileName[0],
lineNumber[0],
taskItemText[0],
null);
}
else
{
buildPane.OutputString(buildMessage);
}
buildPane.OutputString("\n");
}