【问题标题】:WebView2 Is Not Displaying Web PagesWebView2 不显示网页
【发布时间】:2021-07-12 07:18:35
【问题描述】:

我想使用 WebView2 (a) 显示一个网站,以及 (b) 在我的 WPF 应用程序上显示一个本地 .pdf 文件。

https://docs.microsoft.com/en-us/microsoft-edge/webview2/get-started/wpf

微软文档说我需要在我的电脑上下载两个东西作为“先决条件”:

  • Microsoft Edge WebView2
  • Microsoft Edge Insider 频道

对于第一个,我下载了“Evergreen Bootstrapper”(不是“Evergreen Standalone Installer”或“Fixed Version”)。 对于第二个,我下载了适用于 Windows 10 的“Canary Channel”。

这些是正确的选择吗?

我在不初始化的情况下运行代码,WebView2控件全黑,不渲染微软网站。

         xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"

        <wv2:WebView2 Name="webView" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="https://www.microsoft.com" />

现在当我尝试调用 InitializeAsync() 方法时,它会抛出异常:

    private async void InitializeWebView2Async()
    {
        try
        {
            await webView.EnsureCoreWebView2Async(null);
        }
        catch (Exception ex)
        {
        }
    }

异常消息:“{”无法加载 DLL 'WebView2Loader.dll':找不到指定的模块。 (HRESULT 异常:0x8007007E)"}"

堆栈跟踪“在 Microsoft.Web.WebView2.Core.CoreWebView2Environment.CreateCoreWebView2EnvironmentWithOptions(字符串 browserExecutableFolder,字符串 userDataFolder, ICoreWebView2EnvironmentOptions 选项, ICoreWebView2CreateCoreWebView2EnvironmentCompletedHandler environment_created_handler)\r\n 在 Microsoft.Web.WebView2.Core.CoreWebView2Environment.d__3.MoveNext()\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(任务任务)\r\n 在 Microsoft.Web.WebView2.Wpf.WebView2.c__DisplayClass26_0.d.MoveNext()\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 System.Runtime.CompilerServices.TaskAwaiter.GetResult()\r\n at MyProject.MyUserControl.d__3.MoveNext() 在 C:\Projects\MyProject\Views\MyUserControl.xaml.cs:line 58" 字符串

谢谢。

【问题讨论】:

  • 您是否为项目安装了 wv2 作为 NuGet 包?

标签: wpf xaml microsoft-edge webview2


【解决方案1】:

关于先决条件:文档说要安装 WebView2 Runtime 或不稳定的 Edge 浏览器。您不需要同时安装两者。默认情况下,WebView2 将使用最稳定的安装选项:WebView2 Runtime,然后是 Edge 浏览器 beta 通道,然后是 Edge 浏览器开发通道,然后是 Edge 浏览器。金丝雀频道。

关于 WebView2Loader.dll:针对不同 CPU 架构的 WebView2Loader.dll 包含在 WebView2 nuget 包中。如果您将 WebView2 nuget 包添加为项目的依赖项,它应该在构建期间自动将 WebView2Loader.dll 复制到正确的位置。如果您正在执行自定义操作,则需要确保手动复制正确的 WebView2Loader.dll 文件。

【讨论】:

  • 不幸的是,当您使用“AnyCPU”时,出现了一个错误! Microsoft 应该将“AnyCPU”的检查更改为“catchall”(当找不到与构建匹配的文件夹时,请始终使用根文件夹中的“WebView2Loader.dll”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-15
  • 1970-01-01
相关资源
最近更新 更多