Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La ventana Salida del IDE de Visual Studio es un ventana de herramientas que se puede usar para entregar el estado, el diagnóstico o el registro, o cualquier otro texto informativo al usuario. A diferencia de Indicaciones del usuario, que puede mostrar un cuadro de mensaje, los mensajes escritos en la ventana de salida solo se muestran si el usuario tiene la ventana de salida visible en el IDE y su canal está seleccionado en la lista desplegable Mostrar salida desde. La ventana de resultados se vuelve visible cuando el usuario selecciona Ver > Menú de salida en el menú principal.
Comenzar
Importante
Las API de la ventana salida de extensibilidad de VisualStudio.Extensibility están actualmente en versión preliminar y están sujetas a cambios. Es posible que cualquier extensión que aproveche estas API no funcione en versiones futuras de Visual Studio y tendrá que actualizarse cuando se publique una versión más reciente de las API.
Para empezar, siga la sección crear el proyecto en la sección Introducción.
Trabajar con la ventana de salida
Esta guía está diseñada para cubrir las cosas más comunes que puede hacer con la ventana Salida:
Obtención de un canal de ventana de salida
Para escribir en la Ventana de salida, necesita un canal de la Ventana de salida, que se puede crear mediante la llamada a VisualStudioExtensibility.Views().Output.CreateOutputChannelAsync()
.
OutputWindowExtensibility.CreateOutputChannelAsync()
El método CreateOutputChannelAsync()
tiene dos parámetros:
Parámetro | Tipo | Obligatorio | Descripción |
---|---|---|---|
displayName |
string |
Sí | Nombre para mostrar de la ventana de salida. Esto es lo que estará visible en el menú desplegable "Mostrar salida de:" en el panel Salida. Este valor se marca como "Localizable" para localizar el nombre visible. |
cancellationToken |
CancellationToken |
Sí | El CancellationToken de la operación asincrónica. |
Editar o agregar la clase Extension
Si el proyecto aún no contiene una clase que deriva de Extension
, debe agregar una como la siguiente (en este caso denominada MyExtension.cs
):
using System.Resources;
using Microsoft.VisualStudio.Extensibility;
namespace MyProject
{
public class MyExtension : Extension
{
// Initiailzation code here
}
}
Adición del código de inicialización
Este código puede estar en la clase que quiera usar para mostrar mensajes de salida (como un comando ), pero lo importante es que CreateOutputChannelAsync()
solo se puede llamar una vez para un nombre para mostrar de un canal de ventana de salida determinado( si hay conflictos, se producirá una excepción, por lo que considere la posibilidad de llamarlo en un método de inicialización único, como InitializeAsync()
.
public override async Task InitializeAsync(CancellationToken cancellationToken)
{
string displayName = "My Output Window";
// To use this Output window Channel elsewhere in the class, such as the ExecuteCommandAsync() method in a Command, save this result to a field in the class.
OutputChannel? outputChannel = await this.Extensibility.Views().Output.CreateOutputChannelAsync(displayName, cancellationToken);
}
Escribir en el canal de salida
La instancia de OutputChannel
obtenida en Obtener un canal de ventana de salida tiene una propiedad System.IO.TextWriter
denominada Writer
, que admite operaciones conocidas para escribir texto, como:
Además, puede llamar a WriteAsync()
o WriteLineAsync()
directamente desde el OutputChannel
, o acceder a un System.IO.Pipelines.PipeWriter
a través de la propiedad PipeWriter
.
Ejemplo
Este fragmento de código se puede usar siempre que quiera mostrar un mensaje en la ventana Salida, como en el método ExecuteCommandAsync()
de un comando .
if (this.outputChannel != null)
{
await this.outputChannel.Writer.WriteLineAsync("This is a test of the output channel TextWriter.");
await this.outputChannel.WriteLineAsync("This is a test of the output channel.");
var rom = new ReadOnlyMemory<byte>(Encoding.UTF8.GetBytes("This is a test of the output channel PipeWriter."));
await this.outputChannel.PipeWriter.WriteLineAsync(rom, new());
}
Pasos siguientes
Aprende más:
- Más información sobre los comandos de
- Obtenga más información sobre cómo exponer la funcionalidad en el IDE dentro de una ventana de herramientas
- Obtenga información sobre cómo interactuar con el usuario con Indicaciones de usuario
Vea el código de ejemplo: