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.
Verwenden Sie Microsoft Visual Studio Code zum Debuggen von Skripts, die in WebView2-Steuerelementen ausgeführt werden.
Detaillierter Inhalt:
- Einführung
- Erstellen einer launch.json Datei
- Debuggen des Codes
- Gezieltes WebView2-Debuggen
- Debuggen laufender Prozesse
- Debuggen von Ablaufverfolgungsoptionen
- Debuggen von Office-Add-Ins
- Debuggen von WebView2-WinUI 2-Apps (UWP)
- Quellzuordnungen mit dem WebResourceRequested-Ereignis oder der Zuordnung virtueller Hostnamen
- Problembehandlung für den Debugger
- Siehe auch
Einführung
Verwenden Sie Microsoft Visual Studio Code zum Debuggen von Skripts, die in WebView2-Steuerelementen ausgeführt werden.
Visual Studio Code verfügt über einen integrierten Debugger für das Browserdebugging. Siehe Browserdebugging in VS Code.
Erstellen einer launch.json Datei
Zum Debuggen deines Codes muss dein Projekt über eine launch.json Datei verfügen. Eine launch.json Datei ist eine Debuggerkonfigurationsdatei zum Konfigurieren und Anpassen des Visual Studio Code-Debuggers. Eine der Eigenschaften, die zum Konfigurieren des Debuggers erforderlich ist, ist die request Eigenschaft. Es gibt zwei request Arten: launch und attach.
Der folgende Code veranschaulicht das Starten der App über Visual Studio Code (anstatt den Debugger an eine ausgeführte instance der App anzufügen). Dazu muss die App zuvor erstellt worden sein. Wenn Ihr Projekt keine Datei enthält launch.json , erstellen Sie eine neue launch.json Datei im .vscode Unterordner im aktuellen Projekt, und fügen Sie den folgenden Code ein:
"name": "Hello debug world",
"type": "msedge",
"port": 9222, // The port value is optional, and the default value is 9222.
"request": "launch",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
// The following variable is needed when the "runtimeExecutable" property is set.
// The port number below must match the value of the "port" property above.
"WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS": "--remote-debugging-port=9222"
// Customize for your app location.
"Path": "%path%;e:/path/to/your/app/location; "
},
"useWebView": true,
// The following two lines set up source path mapping, where "url" is the start page
// of your app, and "webRoot" is the top-level directory containing all your code files.
"url": "file:///${workspaceFolder}/path/to/your/toplevel/foo.html",
"webRoot": "${workspaceFolder}/path/to/your/assets"
Verwenden eines Registrierungswerts
Anstatt die WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS Umgebungsvariable festzulegen, können Sie der Registrierung unter dem Registrierungsschlüssel Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArgumentseinen neuen Registrierungswert namens <myApp.exe> with data --remote-debugging-port=9222 hinzufügen, damit der Debugger den richtigen Port finden kann. Weitere Informationen finden Sie unter WebView2-Browserflags.
Parameter der Befehlszeilen-URL übergeben
Für die Quellpfadzuordnung in Visual Studio Code ist jetzt eine URL erforderlich, sodass Ihre App beim Starten einen url Befehlszeilenparameter empfängt. Sie können den url Parameter bei Bedarf ignorieren.
Debuggen des Codes
Klicken Sie zum Festlegen eines Haltepunkts in Ihrem Quellcode auf eine Codezeile, und drücken Sie F9:
Wählen Sie auf der Registerkarte Ausführen die Startkonfiguration aus dem Dropdownmenü aus.
Klicken Sie auf "Debuggen starten", welches grüne Dreieck neben der Dropdownliste der Startkonfiguration angezeigt wird:
Um die Debugausgabe und die Fehler anzuzeigen, öffnen Sie die Debugkonsole:
Gezieltes WebView2-Debuggen
In einigen WebView2-Apps können Sie mehr als ein WebView2-Steuerelement verwenden. Verwenden Sie das gezielte WebView2-Debuggen, um auszuwählen, welches WebView2-Steuerelement in dieser Situation debuggen soll.
Öffnen Sie die folgenden Aktionen, und führen Sie launch.json die folgenden Aktionen aus, um gezieltes WebView2-Debuggen zu verwenden.
Vergewissern Sie sich, dass der
useWebviewParameter auftruefestgelegt ist.Fügen Sie den
urlFilterParameter hinzu. Wenn das WebView2-Steuerelement zu einer URL navigiert, wird derurlFilterParameterwert verwendet, um Zeichenfolgen zu vergleichen, die in der URL angezeigt werden.
"useWebview": "true",
"urlFilter": "*index.ts",
// Options for "urlFilter":
// Match any url that ends with "index.ts":
"urlFilter": "*index.ts",
// Match any url that contains "index" anywhere in the URL:
"urlFilter": "*index*",
// Explicitly match a file named "index.ts":
"urlFilter": "file://C:/path/to/my/index.ts",
Beim Debuggen Ihrer App müssen Sie möglicherweise den Code vom Anfang des Renderingprozesses an durchlaufen. Wenn Sie Webseiten auf Websites rendern und keinen Zugriff auf den Quellcode haben, können Sie die ?=value Option verwenden, da Webseiten unbekannte Parameter ignorieren.
Gleichzeitiges Debuggen von zwei WebView2-Steuerelementen nicht möglich
Nachdem die erste Übereinstimmung in der URL gefunden wurde, wird der Debugger beendet. Sie können nicht zwei WebView2-Steuerelemente gleichzeitig debuggen, da der CDP-Port von allen WebView2-Steuerelementen gemeinsam genutzt wird und eine einzige Portnummer verwendet.
Debuggen laufender Prozesse
Möglicherweise müssen Sie den Debugger an ausgeführte WebView2-Prozesse anfügen. Aktualisieren Sie dazu launch.jsonin den request Parameter, und ändern Sie seinen Wert in attach:
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/myApp.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
}
Ihr WebView2-Steuerelement muss den Chrome Developer Protocol (CDP)-Port öffnen, um das Debuggen des WebView2-Steuerelements zu ermöglichen. Der Code muss so erstellt werden, dass nur ein WebView2-Steuerelement einen CDP-Port geöffnet hat, bevor der Debugger gestartet wird.
Sie müssen auch einen neuen REGKEY <myApp.exe> = --remote-debugging-port=9222 unter Computer\HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArgumentshinzufügen, damit der Debugger den richtigen Port finden kann. So fügen Sie diesen Registrierungsschlüssel hinzu:
Drücken Sie die Windows-Logo-Taste und suchen Sie dann nach dem Registrierungs-Editor. Öffnen Sie die App "Registrierungs-Editor ", und klicken Sie dann auf "Ja ", um die Bearbeitung zuzulassen.
Versuchen Sie in der Ordnerstruktur auf der linken Seite zu erweitern
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments.Wenn der
\Edge\WebView2\AdditionalBrowserArgumentsTeil dieses Pfads nicht vorhanden ist, erstellen Sie diese drei geschachtelten Unterordner wie folgt:So erstellen Sie den
\EdgeUnterordner: Klicken Sie in der Ordnerstruktur mit der rechten Maustaste auf denHKEY_CURRENT_USER\Software\Policies\MicrosoftOrdner, zeigen Sie auf Neu, und wählen Sie dann Schlüssel aus. Ein Ordner wird als untergeordnetes Element des OrdnersMicrosofthinzugefügt und ursprünglich mit dem NamenNew Key #1"" benannt. Klicken Sie mit der rechten Maustaste auf denNew Key #1Ordner, und wählen Sie Umbenennen aus. Geben Sie den Namen des neuen Schlüssels einEdge.Erstellen Sie den
\WebView2Unterordner, wie im vorherigen Schritt beschrieben.Erstellen Sie den
\AdditionalBrowserArgumentsUnterordner, wie im vorherigen Schritt beschrieben.Der Baum ist jetzt erweitert zu
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments.
Klicken Sie mit der rechten Maustaste auf den
AdditionalBrowserArgumentsOrdner, zeigen Sie auf Neu, und wählen Sie dann Zeichenfolgenwert aus. Klicken Sie in der Spalte Name mit der rechten Maustaste aufNew Value #1, wählen Sie Umbenennen aus, und geben Sie dann den Dateinamen der ausführbaren App-Datei ein, z. BmyApp.exe. . .Klicken Sie in der Spalte Name mit der rechten Maustaste auf den Namen der ausführbaren Datei, z. B
myApp.exe. , und wählen Sie dann Ändern aus. Das Dialogfeld "Zeichenfolge bearbeiten " wird geöffnet.Geben Sie in das Textfeld Wertdaten folgendes ein
--remote-debugging-port=9222:
Klicken Sie auf die Schaltfläche "OK ", und überprüfen Sie dann, ob der Registrierungsschlüssel folgendermaßen übereinstimmt (mit dem Dateinamen der
.exeDatei in der Spalte "Name "):
Verwenden einer Umgebungsvariablen
Anstatt den obigen Registrierungsschlüssel hinzuzufügen, können Sie die WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS Umgebungsvariable auf --remote-debugging-port=9222setzen. Stellen Sie sicher, dass Ihre Anwendung gestartet wird, nachdem die Umgebungsvariable festgelegt wurde, und stellen Sie sicher, dass Ihre Anwendung die Umgebungsvariable erbt. Weitere Informationen finden Sie unter WebView2-Browserflags.
Debuggen von Ablaufverfolgungsoptionen
Um die Debug-Ablaufverfolgung zu aktivieren, fügen Sie den trace Parameter wie folgt hinzu launch.json :
- Fügen Sie den
traceParameter hinzu:
"name": "Hello debugging world",
"type": "msedge",
"port": 9222,
"request": "attach",
"runtimeExecutable": "C:/path/to/your/webview2/app.exe",
"env": {
"Path": "%path%;e:/path/to/your/build/location; "
},
"useWebView": true
,"trace": true // Turn on debug tracing, and save the output to a log file.
Speichern der Debugausgabe in einer Protokolldatei:
,"trace": "verbose" // Turn on verbose tracing in the Debug Output pane.
Visual Studio Code-Ausgabe im Bereich "DEBUG-KONSOLE " mit aktivierter ausführlicher Ablaufverfolgung:
Debuggen von Office-Add-Ins
Wenn Sie Office-Add-Ins debuggen, öffnen Sie den Add-In-Quellcode in einer separaten Instance von Visual Studio Code. Öffnen Sie launch.json in Ihrer WebView2-App. Fügen Sie den folgenden Code in launch.jsonhinzu, um den Debugger an das Office-Add-In anzuhängen:
,"debugServer": 4711
Debuggen von WebView2-WinUI 2-Apps (UWP)
Installieren Sie eine WebView2-Runtime-Version von früher.
106.0.1370.34Öffnen Sie den Registrierungs-Editor, indem Sie die Windows-Logo-Taste drücken und dann nach Registrierungs-Editor suchen. Öffnen Sie die Anwendung Registrierungs-Editor und wählen Sie Ja , um die Bearbeitung zuzulassen.
Legen Sie den Registrierungsschlüssel
HKEY_CURRENT_USER\Software\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArgumentsauf--remote-debugging-pipe. Führen Sie dazu die Schritte aus, die im Abschnitt Debuggen laufender Prozesse oben beschrieben sind.Vergewissern Sie sich, dass der Registrierungsschlüssel im Editor festgelegt wurde und mit folgendem übereinstimmt:
Fügen Sie Ihrer
launch.jsonDatei eine neue Konfiguration hinzu. Öffnen Sielaunch.jsonden folgenden Code, und fügen Sie ihn hinzu:"name": "Attach to UWP App", "useWebView":{ "pipeName":"JSDebugPipe" } "request": "attach", "type": "msedge", "webRoot":"${workspaceFolder}"Starten Sie Ihre App.
Klicken Sie auf die Schaltfläche "Debuggen starten ", um sie an den Prozess anzufügen und mit dem Debuggen zu beginnen.
Quellzuordnungen mit der WebResourceRequested Ereignis- oder virtuellen Hostnamenzuordnung
Quellzuordnungen werden benötigt, um den Quellcode kompilierter Inhalte zu debuggen, einschließlich:
- Transpiliertes JavaScript, z. B. TypeScript oder minimiertes JavaScript.
- Kompiliertes CSS, z. B. SASS oder SCSS.
WebView2 lädt keine Quellzuordnungen, auf die von Inhalten verwiesen wird, die mit einem der beiden Ansätze geladen wurden:
Das
WebResourceRequestedEreignis. Siehe:-
Laden lokaler Inhalte durch Behandeln des
WebResourceRequestedEreignisses in Verwenden lokaler Inhalte in WebView2-Apps. -
Quellzuordnungen mit dem
WebResourceRequestedEreignis in Verwenden lokaler Inhalte in WebView2-Apps.
-
Laden lokaler Inhalte durch Behandeln des
Zuordnung virtueller Hostnamen. Siehe:
- Laden lokaler Inhalte mithilfe der Zuordnung virtueller Hostnamen in Verwenden lokaler Inhalte in WebView2-Apps.
- Quellzuordnungen mit Zuordnung virtueller Hostnamen in Verwenden lokaler Inhalte in WebView2-Apps.
Problembehandlung für den Debugger
Diese Szenarien können bei Verwendung des Debuggers auftreten.
Hört nicht beim Haltepunkt auf
Wenn der Debugger nicht am Haltepunkt stoppt und Sie über eine Debugausgabe verfügen:
Um das Problem zu beheben, überprüfen Sie, ob die Datei mit dem Haltepunkt dieselbe Datei ist, die vom WebView2-Steuerelement verwendet wird. Der Debugger führt keine Quellpfadzuordnung durch.
Kann nicht an laufenden Prozess angefügt werden
Wenn Sie keine Verbindung zu einem laufenden Prozess herstellen können und ein Timeoutfehler angezeigt wird:
Um das Problem zu beheben, bestätigen Sie, dass das WebView2-Steuerelement den CDP-Port geöffnet hat. Stellen Sie sicher, dass Ihr additionalBrowserArguments Wert in der Registrierung korrekt ist oder die Optionen richtig sind. Siehe additionalBrowserArguments für dotnet und additionalBrowserArguments für Win32.
Siehe auch
- Erste Schritte mit WebView2
- WebView2Samples-Repository – ein umfassendes Beispiel für WebView2-Funktionen.
- WebView2-API-Referenz