Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Buildunterstützung in Open Folder-Szenarien erfordert eine Erweiterung, um indizierte und Dateikontextdaten für den Arbeitsbereich sowie die zu ausführende Build-Aktion zu liefern.
Im Folgenden finden Sie eine Gliederung darüber, was Ihre Erweiterung benötigt.
Dateikontext erstellen
- Anbieterfabrik
-
ExportFileContextProviderAttributeAttribut mitsupportedContextTypeGuidsals alle anwendbarenstringKonstanten vonBuildContextTypes - Implementiert
IWorkspaceProviderFactory<IFileContextProvider> - Dateikontextanbieter
- Gebe ein
FileContextfür jeden unterstützten Buildvorgang und jede unterstützte Konfiguration zurück- Extraktion von
$(AssemblyName)aus MSBuild -
contextimplementiert IBuildConfigurationContext mit derConfigurationEigenschaft als Buildkonfiguration (z. B."Debug|x86","ret"odernull, falls nicht zutreffend). Verwenden Sie alternativ eine Instanz von BuildConfigurationContext. Der Konfigurationswert muss mit der Konfiguration aus dem indizierten Dateidatenwert übereinstimmen.
- Extraktion von
- Gebe ein
-
Wert der indizierten Builddateidaten
- Provider-Factory
-
ExportFileScannerAttributeAttribut mitIReadOnlyCollection<FileDataValue>als unterstütztem Typ - Implementiert
IWorkspaceProviderFactory<IFileScanner>
-
- Dateiscanner auf
ScanContentAsync<T>- Gibt Daten zurück, wenn es sich um
FileScannerTypeConstants.FileDataValuesTypedas Typargument handelt. - Gibt einen Dateidatenwert für jede Konfiguration zurück, die mit:
-
typealsBuildConfigurationContext.ContextTypeGuid -
contextals Buildkonfiguration (z. B."Debug|x86","ret"odernullfalls nicht zutreffend). Dieser Wert muss mit der Konfiguration aus dem Dateikontext übereinstimmen.
-
- Gibt Daten zurück, wenn es sich um
Erstellen einer Dateikontextaktion
- Anbieterfabrik
-
ExportFileContextActionProviderAttribut mitsupportedContextTypeGuidsals alle anwendbarenstringKonstanten vonBuildContextTypes - Implementiert
IWorkspaceProviderFactory<IFileContextActionProvider>
-
- Aktionsanbieter für
IFileContextActionProvider.GetActionsAsync- Zurückgeben eines
IFileContextActionWerts, der dem angegebenenFileContext.ContextTypeWert entspricht
- Zurückgeben eines
- Dateikontextaktion
-
IFileContextActionund IVsCommandItem implementiert -
CommandGroupDie Eigenschaft gibt16537f6e-cb14-44da-b087-d1387ce3bf57zurück. -
CommandIdist0x1000für Erstellung,0x1010für Neuaufbau oder0x1020für die Bereinigung vorgesehen.
-
Hinweis
Da die FileDataValue indiziert werden muss, wird es einige Zeit dauern zwischen dem Öffnen des Arbeitsbereichs und dem Punkt, an dem die Datei für die vollständige Buildfunktion gescannt wird. Die Verzögerung wird beim ersten Öffnen eines Ordners angezeigt, da kein zuvor zwischengespeicherter Index vorhanden ist.
Melden von Nachrichten aus einem Build
Der Build kann Informationen, Warnungen und Fehlermeldungen für Benutzer auf eine von zwei Arten anzeigen. Die einfache Möglichkeit besteht darin, das IBuildMessageService zu verwenden und ein BuildMessage bereitzustellen, wie folgt:
using Microsoft.VisualStudio.Workspace;
using Microsoft.VisualStudio.Workspace.Build;
private static void OutputBuildMessage(IWorkspace workspace)
{
IBuildMessageService buildMessageService = workspace.GetBuildMessageService();
if (buildMessageService != null)
{
// Example error build message. See the documentation for BuildMessage for more information.
var message = new BuildMessage()
{
Type = BuildMessage.TaskType.Error,
Code = "MY1001",
TaskText = "This is a sample error",
ProjectFile = "buildfile.bld",
File = "sourcefile.src"
LogMessage = $"This is sample text that will only go to the Build output window pane.\n"
// And any other properties to set
};
buildMessageService.ReportBuildMessages(new BuildMessage[] { message });
}
}
BuildMessage.Type und BuildMessage.LogMessage steuern das Verhalten, wo dem Benutzer Informationen angezeigt werden. Jeder BuildMessage.TaskType andere Wert als None erzeugt einen Fehlerlisten-Eintrag mit den angegebenen Details.
LogMessage wird immer im Fenster "Build " des Ausgabetoolfensters ausgegeben.
Alternativ können Erweiterungen direkt mit der Fehlerliste oder dem Buildbereich interagieren. In Versionen vor Visual Studio 2017, Version 15.7, ist ein Fehler vorhanden, bei dem das pszProjectUniqueName Argument OutputTaskItemStringEx2 ignoriert wird.
Warnung
Aufrufer von IFileContextAction.ExecuteAsync können beliebige zugrunde liegende Implementierungen für das IProgress<IFileContextActionProgressUpdate> Argument bereitstellen. Rufen Sie niemals direkt auf IProgress<IFileContextActionProgressUpdate>.Report(IFileContextActionProgressUpdate) . Es gibt derzeit keine allgemeinen Richtlinien für die Verwendung dieses Arguments, aber diese Richtlinien können geändert werden.
Erstellen verwandter APIs
- IBuildConfigurationContext stellt Details zur Build-Konfiguration bereit.
- IBuildMessageService zeigt BuildMessages Benutzern an.
tasks.vs.json und launch.vs.json
Informationen zum Erstellen einer tasks.vs.json- oder launch.vs.json-Datei finden Sie unter Anpassen von Build- und Debugaufgaben.
Verwandte Inhalte
- Language Server-Protokoll – Erfahren Sie, wie Sie Sprachserver in Visual Studio integrieren.