9

我采用了最新版本的 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 个月前遇到了这个问题,但我希望微软现在已经超越了这个问题。 如何在 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

4

8 回答 8

6

您需要确保 1) Edge 版本是正确的。尝试从 URL https://c2rsetup.officeapps.live.com/c2r/downloadEdge.aspx?ProductreleaseID=Edge&platform=Default&version=Edge&source=EdgeInsiderPage&Channel=Canary&language=en下载 Canary 版本 Edge

和 2) 将 x86 设置为目标平台将解决问题。

于 2020-05-20T04:18:32.613 回答
2

我遇到了同样的问题,但我能够解决它。只要 traget CPU 为“任何 CPU”,它就会崩溃,但如果将其更改为“x86”或“x64”,在我的情况下它会成功运行。似乎它无法检查和使用未指定的目标 CPU 架构。

我希望这可以避免很多人头疼

于 2020-07-11T01:06:04.813 回答
1

按照设定的平台指导...

如果您使用的是 Canary Microsoft.Web.WebView2.0.9.628-prerelease。有一个已知问题,目前的解决方案是降级到 Microsoft.Web.WebView2.0.9.579-prerelease。

https://github.com/MicrosoftEdge/WebView2Feedback/issues/431

这对我有用。

于 2020-09-27T16:53:30.923 回答
1

不幸的是,这仍然是 0.9.515-prerelease 中的一个问题。有一个针对此的错误打开,我添加了有关我的复制的更多详细信息:

https://github.com/MicrosoftEdge/WebViewFeedback/issues/228#issuecomment-687873636

编辑:如果您为 x64 位安装 Edge,则 x86 建议不适用于您。您可以为 x64 构建它,它会工作。我对问题的回复中的更多详细信息:https ://github.com/MicrosoftEdge/WebViewFeedback/issues/228#issuecomment-687900181

于 2020-09-06T19:39:15.867 回答
0

这对我有用:

 var userDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "\\OurSoftware";
var env = await CoreWebView2Environment.CreateAsync(null, userDataFolder);
于 2022-02-28T22:40:38.787 回答
0

如果 WebView2 组件无权创建存储用户设置等所需的数据文件夹,则 WebView2 组件可能会在加载过程中生成异常并使应用程序崩溃。

如果应用程序在从 Visual Studio 或从其他不受限制的位置启动时正确加载,但在安装到 Program Files 时无法加载,那么这可能是一个问题。

默认情况下,数据文件夹创建在与应用程序 exe 相同的文件夹中,这在 Program Files 中可能会失败。数据文件夹需要设置到其他位置。

此链接提供有关使用数据文件夹的一些信息: 管理用户数据文件夹

此问题提供了一些代码,用于将 WebView2 的数据文件夹设置为有效位置: WebView2 C# Winforms application doesn't work when installed in Program Files folder #297

于 2020-09-09T12:23:40.420 回答
0

从我的Edge的路径“C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe”,我们可以断定当前Edge是32位程序?请尝试将平台目标设置为 x86。一些大师说,使用 x86 设置,它会工作!

从 MS 示例项目 WebView2WindowsFormsBrowser.csproj 中,Microsoft.Web.WebView2 版本应该是“0.9.515-prerelease”。

于 2020-05-20T03:12:10.327 回答
0

正如其他人所说,使用 WebView2 0.9.515-prerelease 时,最低 Microsoft Edge 版本为 84.0.515.0。您可以从 Microsoft Edge Insider Channel 下载所需的 Microsoft Edge 版本。请参阅下面的链接。

以下是使用 WebView2 时的一些有用链接:

于 2020-07-11T21:48:58.270 回答