Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La fenêtre Sortie de l’IDE Visual Studio est une fenêtre outil qui peut être utilisée pour fournir l’état, les diagnostics/journalisation ou tout autre texte d’information à l’utilisateur. Contrairement aux messages d'invite utilisateur, qui peuvent afficher une boîte de dialogue, les messages écrits dans la fenêtre Sortie ne s'affichent que si l’utilisateur a la fenêtre Sortie visible dans l’IDE, et que votre canal est sélectionné dans la Afficher la sortie de liste déroulante. La fenêtre de sortie devient visible lorsque l’utilisateur sélectionne Affichage > Sortie dans le menu principal.
Démarrer
Important
Les API de la fenêtre Sortie VisualStudio.Extensibility sont actuellement en préversion et sont susceptibles de changer. Toute extension qui tire parti de ces API peut échouer dans les futures versions de Visual Studio et doit être mise à jour lorsqu’une version plus récente des API est publiée.
Pour commencer, suivez la section créer le projet dans Prise en main.
Travailler avec la fenêtre de sortie
Ce guide est conçu pour couvrir les tâches les plus courantes que vous pouvez effectuer avec la fenêtre Sortie :
Obtenir un canal pour la fenêtre de sortie
Pour écrire dans la fenêtre Sortie, vous avez besoin d’un canal de fenêtre sortie, qui peut être créé en appelant VisualStudioExtensibility.Views().Output.CreateOutputChannelAsync()
.
OutputWindowExtensibility.CreateOutputChannelAsync()
La méthode CreateOutputChannelAsync()
a deux paramètres :
Paramètre | Type | Obligatoire | Description |
---|---|---|---|
displayName |
string |
oui | Nom d'affichage de la fenêtre de sortie. Il s’agit de ce qui sera visible dans le menu déroulant « Afficher la sortie à partir de : » dans le volet Sortie. Cette valeur est marquée comme 'Localizable' pour localiser le nom d'affichage. |
cancellationToken |
CancellationToken |
oui | CancellationToken pour l’opération asynchrone. |
Modifier ou ajouter la classe Extension
Si votre projet ne contient pas encore de classe dérivée de Extension
, vous devez en ajouter un comme le simple ci-dessous (dans ce cas appelé MyExtension.cs
) :
using System.Resources;
using Microsoft.VisualStudio.Extensibility;
namespace MyProject
{
public class MyExtension : Extension
{
// Initiailzation code here
}
}
Ajouter le code d’initialisation
Ce code peut être dans la classe que vous envisagez d’utiliser pour afficher les messages de sortie (par exemple, une Command), mais l’important est que CreateOutputChannelAsync()
ne peut être appelé qu’une seule fois pour un nom d’affichage de canal de sortie donné ( s’il existe des conflits, une exception sera levée. Par conséquent, envisagez de l’appeler dans une méthode d’initialisation unique telle que 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);
}
Écrire dans le canal de sortie
L’instance OutputChannel
obtenue dans obtenir un canal de fenêtre sortie a une propriété System.IO.TextWriter
appelée Writer
, qui prend en charge les opérations familières pour l’écriture de texte, telles que :
En outre, vous pouvez appeler WriteAsync()
ou WriteLineAsync()
directement sur le OutputChannel
, ou accéder à un System.IO.Pipelines.PipeWriter
via la propriété PipeWriter
.
Exemple
Cet extrait de code peut être utilisé partout où vous souhaitez afficher un message dans la fenêtre Sortie, par exemple dans la méthode ExecuteCommandAsync()
dans une Command.
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());
}
Étapes suivantes
Pour en savoir plus:
- En savoir plus sur les commandes
- En savoir plus sur l’exposition des fonctionnalités dans l’IDE dans une fenêtre d’outil
- En savoir plus sur l’interaction avec l’utilisateur avec les prompts utilisateur
Examinez l’exemple de code :
- Consultez l’exemple OutputWindowSample pour obtenir un exemple complet de création d’une extension qui utilise la fenêtre de sortie.