web-dev-qa-db-ja.com

Microsoft Edge WebView2-ロード時にサンプルがクラッシュする

Microsoft.Web.WebView2の最新バージョン(0.9.515-prerelease)を取得し、テスト用のC#WinFormsアプリケーションに追加しました。 VS 2019を使用していますが、.NETフレームワークは4.7.2です。 WebView2コントロールをフォームに配置し、コンパイルして実行しました。アプリケーションは、Form1.designer.csの以下の時点でロード時にクラッシュしました。

    // webView21
    // 
    this.webView21.Location = new System.Drawing.Point(153, 66);
    this.webView21.Name = "webView21";
    this.webView21.Size = new System.Drawing.Size(492, 253);
    this.webView21.Source = new System.Uri("about:blank", System.UriKind.Absolute);
    this.webView21.TabIndex = 0;
    this.webView21.Text = "webView21";
    this.webView21.ZoomFactor = 1D;
    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(800, 450);
    this.Controls.Add(this.webView21); //CRASHED HERE WITH BELOW EXCEPTION -

これをリリースモードで実行すると、次の例外トレースが表示されます-System.NullReferenceException:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

   at Microsoft.Web.WebView2.WinForms.WebView2.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.OnParentVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Form.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WmShowWindow(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

WebView2の最新の安定バージョン(v 0.9.488)を使用すると、Microsoft.Webを反映していないため、コンパイルエラーがスローされます。

このエラーの修正方法を教えてください。どうぞよろしくお願いいたします。 8か月前にこの質問に出くわしましたが、Microsoftが今それを超えていることを期待しています。 C#WindowsアプリケーションでMicrosoft Edge WebView2コントロールを使用するにはどうすればよいですか

Microsoftが作成したサンプルソリューションには、WinForms用のC#バージョンもあります。 https://github.com/MicrosoftEdge/WebView2Samples

Microsoftから提供されたこのサンプルも試してみました。それもクラッシュします。 https://docs.Microsoft.com/en-us/Microsoft-Edge/webview2/gettingstarted/winforms

6
Krishnan V S

私のEdgeのパス「C:\ Program Files(x86)\ Microsoft\Edge\Application\msedge.exe」から、現在のEdgeは32ビットプログラムであると結論付けることができますか?プラットフォームのターゲットをx86に設定してみてください。一部の達人によると、x86セットで動作します!

mSサンプルプロジェクトWebView2WindowsFormsBrowser.csprojから、Microsoft.Web.WebView2のバージョンは「0.9.515-prerelease」になります。

0
PaulYBChiang

他の人が述べたように、WebView2 0.9.515-prereleaseを使用する場合、Microsoft Edgeの最小バージョンは84.0.515.0です。必要なMicrosoft Edgeバージョンは、Microsoft Edge Insider Channelからダウンロードできます。以下のリンクを参照してください。

以下は、WebView2を使用するときに役立つリンクです。

0
user9938

同じ問題に直面しましたが、解決することができました。対象のCPUが「Any CPU」の場合はいつでもクラッシュしますが、「x86」または「x64」に変更すると、私の場合は正常に実行されます。未指定のターゲットCPUアーキテクチャをチェックして操作することはできないようです。

これが誰かの頭痛の種を救ってくれることを願っています

0
OPMat