Partager via


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");
}

Voir aussi

Référence

IVsLaunchPad

IVsLaunchPadFactory

IVsOutputWindow

IVsOutputWindowPane

OutputWindow

OutputWindowPane

SVsGeneralOutputWindowPane

SVsLaunchPadFactory

SVsOutputWindow