首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使CefSharp在vs公共库中使用配置AnyCPU

如何使CefSharp在vs公共库中使用配置AnyCPU
EN

Stack Overflow用户
提问于 2018-09-18 20:56:08
回答 1查看 10K关注 0票数 4

我已经创建了一个带有WPF窗口的类库项目。在一个WPF窗口中,我想获得一个CefSharp浏览器。我的项目应该是配置AnyCPU。在不同的教程中,我看到在带有AnyCPU的可执行项目中调优CefSharp配置的要点之一是设置(csproj)

代码语言:javascript
复制
<Prefer32Bit>true</Prefer32Bit>

但是在类库项目中,此属性是禁用的。如何在类库中启用AnyCPU对CefSharp的支持?

EN

回答 1

Stack Overflow用户

发布于 2018-09-19 06:27:12

请参阅文档:一般使用指南

有几种支持AnyCPU的解决方案。我使用了以下方法:

首先,通过NuGet安装依赖项。

然后,将<CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport>添加到.csproj文件的第一个PropertyGroup中,该文件包含CefSharp.Wpf.ChromiumWebBrowser控件的CefSharp.Wpf PackageReference。

现在,编写一个程序集解析器,根据当前体系结构找到正确的非托管DLL:

代码语言:javascript
复制
AppDomain.CurrentDomain.AssemblyResolve += OnAssemblyResolve;

private Assembly OnAssemblyResolve(object sender, ResolveEventArgs args)
{
    if (args.Name.StartsWith("CefSharp"))
    {
        string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
        string architectureSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
            Environment.Is64BitProcess ? "x64" : "x86",
            assemblyName);

        return File.Exists(architectureSpecificPath)
            ? Assembly.LoadFile(architectureSpecificPath)
            : null;
    }

    return null;
}

最后,至少使用以下设置初始化CefSharp:

代码语言:javascript
复制
var settings = new CefSettings()
{
    BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
        Environment.Is64BitProcess ? "x64" : "x86",
        "CefSharp.BrowserSubprocess.exe")
};
Cef.Initialize(settings);
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52394485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档