Как заставить CefSharp работать с конфигурацией AnyCPU в общей библиотеке - PullRequest
0 голосов
/ 18 сентября 2018

Я создал проект библиотеки классов с окнами WPF.В одном окне WPF я хочу получить браузер CefSharp.Мой проект должен быть с конфигурацией AnyCPU .В разных уроках я видел, что одна из точек настройки AnyCPU в исполняемом проекте с CefSharp - установить ( csproj )

<Prefer32Bit>true</Prefer32Bit>

Но в классепроекты библиотеки, это свойство отключено.Как я могу включить поддержку AnyCPU для CefSharp в моей библиотеке классов?

1 Ответ

0 голосов
/ 19 сентября 2018

См. Документацию: Общее руководство по использованию

Существует несколько решений для включения поддержки AnyCPU.Я использовал следующее:

Сначала установите зависимости через NuGet .

Затем добавьте <CefSharpAnyCpuSupport>true</CefSharpAnyCpuSupport> к первому PropertyGroup файла .csprojсодержащий CefSharp.Wpf PackageReference для элемента управления CefSharp.Wpf.ChromiumWebBrowser.

Теперь напишите ассемблер сборки, чтобы найти правильные неуправляемые библиотеки DLL в зависимости от текущей архитектуры:

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 по крайней мере с этими настройками:

var settings = new CefSettings()
{
    BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
        Environment.Is64BitProcess ? "x64" : "x86",
        "CefSharp.BrowserSubprocess.exe")
};
Cef.Initialize(settings);
...