使用任何CPU的CefSharp无法显示浏览器

问题描述 投票:0回答:1

首先,我对 .NET 和 C# 相当陌生,这是一个同时学习 C# 和 CEF 的项目。

我遵循了网上的许多教程,并研究了 CefSharp 示例来创建 WinForms 应用程序。

我已经从 NuGet 安装了 CefSharp.WinForms 53.0.1,并且我的项目正在使用 Any CPU(CefSharp 51+ 有 Any CPU 支持)。

为了实现这一目标,我很大程度上遵循了 Ourcode 中的教程(http://ourcodeworld.com/articles/read/173/how-to-use-cefsharp-chromium-embedded-framework-csharp-in-a-winforms-application )。我按照建议对Any CPU进行了更改,并包含了加载谷歌的基本代码。

一切都构建得很好,但是当表单显示时,没有显示浏览器,只有一个空白表单。

如果我将目标设置为 x64 或 x86,则浏览器将按预期显示。

我在 Ourcode 评论中注意到用户 Edek Halon 也遇到了同样的问题,但似乎没有提供解决方案。 Edek,与我的设置相同,所以我想知道这是否是 53.0.1 中的问题?评论中的 Joey De Vries 可能也有同样的问题。

此 GitHub 问题中介绍了 CefSharp 中对任何 CPU 的支持:https://github.com/cefsharp/CefSharp/issues/1714

有一个 CefSharp 的故障排除页面(https://github.com/cefsharp/CefSharp/wiki/Trouble-Shooting),看起来有点矛盾。在一般故障排除

1) 平台目标 使用 NuGet 包时必须选择 x86 或 x64。如果您选择 AnyCPU,NuGet 魔法当前将无法工作。

CefSharp 是否需要从源代码构建才能让任何 CPU 都能工作?

cefsharp
1个回答
0
投票

如果有人遇到困难,请按照以下链接中的 Github 教程进行操作:https://github.com/cefsharp/CefSharp/issues/1714

基本上代码应该如下(Winforms 示例):

 CefSharpSettings.SubprocessExitIfParentProcessClosed = true;
 Cef.EnableHighDPISupport();
 CefSettings settings = new CefSettings
        {
            CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache"), //By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
            BrowserSubprocessPath = @"x86\CefSharp.BrowserSubprocess.exe"
        };
        Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null); // Initialize cef with the provided settings            
        chromeBrowser = new ChromiumWebBrowser("http://ourcodeworld.com"); // Create a browser component            
        this.Controls.Add(chromeBrowser); // Add it to the form and fill it to the form window.
        chromeBrowser.Dock = DockStyle.Fill;
© www.soinside.com 2019 - 2024. All rights reserved.