Condividi tramite


Finestra di output (Visual Studio SDK)

La finestra di output è un set di riquadri del testo a cui è possibile scrivere e leggere. Visual Studio definisce questi riquadri incorporati: Compilazione, con cui i progetti comunicano i messaggi sulle compilazioni e Generale, con cui Visual Studio passa i messaggi sull'ambiente di sviluppo integrato (IDE). I progetti ricevono un riferimento al riquadro di Compilazione automaticamente con i metodi di interfaccia di IVsBuildableProjectCfg e le offerte di Visual Studio accesso diretto al riquadro di Generale tramite il servizio di SVsGeneralOutputWindowPane . Oltre ai riquadri incorporati, è possibile creare e gestire per contenere i riquadri personalizzati.

È possibile controllare la finestra di output direttamente tramite le interfacce di IVsOutputWindowPane e di IVsOutputWindow . L'interfaccia di IVsOutputWindow , che viene fornita dal servizio di SVsOutputWindow , definire i metodi per creare, recuperare ed eliminare i riquadri della finestra di output. L'interfaccia di IVsOutputWindow definire i metodi per visualizzare i riquadri, nascondere i riquadri e modificare il testo. Un metodo alternativo di controllo della finestra di output avviene tramite gli oggetti di OutputWindowPane e di OutputWindow il modello a oggetti di automazione di Visual Studio. Questi oggetti includono quasi tutte le funzionalità delle interfacce di IVsOutputWindowPane e di IVsOutputWindow . Inoltre, OutputWindow e gli oggetti di OutputWindowPane aggiunte alcune funzionalità di livello superiore per semplificare enumerare i riquadri della finestra di output e recuperare il testo dai riquadri.

Esempio

Descrizione

In questo esempio viene illustrato come creare un nuovo riquadro della finestra di output utilizzando l'interfaccia di IVsOutputWindow .

Codice

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

Esempio

Descrizione

In questo esempio viene illustrato come creare un riquadro della finestra di output utilizzando l'oggetto di OutputWindow .

Codice

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

Commenti

Sebbene la raccolta di OutputWindowPanes consente di recuperare un riquadro della finestra di output dal titolo, i titoli del riquadro non sono garantiti per essere univoci. Quando dubitate l'univocità di un titolo, utilizzare il metodo di GetPane per recuperare il riquadro corretto dal GUID.

Esempio

Descrizione

In questo esempio viene illustrato come eliminare un riquadro della finestra di output.

Codice

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

Esempio

Descrizione

In questo esempio viene illustrato come eliminare un riquadro della finestra di output, dato un oggetto di OutputWindowPane .

Codice

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

Esempio

Descrizione

In questo esempio viene illustrato come recuperare il riquadro incorporato di Generale della finestra di output.

Codice

Private Function GetGeneralPane() As IVsOutputWindowPane 
    Return DirectCast(GetService(GetType(SVsGeneralOutputWindowPane)), IVsOutputWindowPane) 
End Function
IVsOutputWindowPane GetGeneralPane()
{
    return (IVsOutputWindowPane)GetService(
        typeof(SVsGeneralOutputWindowPane));
}

Esempio

Descrizione

In questo esempio viene illustrato come analizzare un messaggio di compilazione standard per gli errori e aggiungere un elemento alla finestra di errore , se richiesto, prima del messaggio viene inviato alla finestra di output.

Codice

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

Vedere anche

Riferimenti

IVsLaunchPad

IVsLaunchPadFactory

IVsOutputWindow

IVsOutputWindowPane

OutputWindow

OutputWindowPane

SVsGeneralOutputWindowPane

SVsLaunchPadFactory

SVsOutputWindow