CefSharp на Windows XP / Server 2003 / VS 2010

Я пытаюсь интегрировать CefSharp в проект С#, который я разрабатываю в Visual Studio 2010 в Windows XP. О подобных ошибках сообщали и другие люди, использующие Windows Server 2003.

  1. Я добавляю CefSharp.WinForms через NuGet, и, похоже, он отлично работает.

  2. Я компилирую и запускаю приложение, однако, когда я пытаюсь загрузить CefSharp, я получаю сообщение «Не удалось загрузить процедуру, импортированную CefSharp.Core.dll».

Ниже приведен код, который я запускаю:

        var settings = new CefSharp.CefSettings {
            PackLoadingDisabled = true
        };

        if (Cef.Initialize(settings)) {
            throw new Exception("Failed to initialze CefSharp");
        }

        var browser = new CefSharp.WinForms.ChromiumWebBrowser("http://www.google.com/");
        browser.SetBounds(0, 0, ClientSize.Width, ClientSize.Height);
        Controls.Add(browser);

В Часто задаваемые вопросы по CefSharp говорится мне, что я должен выполнить ряд задач, которые я сделал, чтобы работать в Windows XP, хотя XP официально не поддерживается, в FAQ говорится, что она работает.

  • Убедитесь, что у вас установлен последний пакет обновлений и установлены исправления ДА
  • Убедитесь, что установлена ​​правильная версия Visual C++. ДА
  • Отключите ускорение графического процессора (см. https://github.com/cefsharp/CefSharp/issues/627#issuecomment-64232089) НЕ ВАЖНО, так как я даже не могу создать экземпляр CefSettings
  • Убедитесь, что ваше здание находится в режиме выпуска. ДА Пробовал
  • Посмотрите файл Debug.log в каталоге bin (может потребоваться увеличение детализации журнала, см. https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/CefExample.cs#L22) НЕ ВАЖНО, поскольку я даже не могу создать экземпляр CafSettings
  • Обновите до последней версии драйверы графического процессора, если вы еще этого не сделали. ДА

Появляется сообщение об ошибке

Файлы проекта

Файлы в bin\x86\debug


person www.jensolsson.se    schedule 23.01.2015    source источник
comment
@albertjan Нет, к сожалению, нет. Мне удалось заставить работать старую версию CefSharp. Меня все еще интересует решение!   -  person www.jensolsson.se    schedule 11.02.2015
comment
Я сделал :), но я не мог заставить его работать с nugets. Мне пришлось самому скомпилировать его в .net 4. И мне пришлось указать набор инструментов целевой платформы 120 для проекта c++. (хотя я не совсем уверен, что это было действительно необходимо)   -  person albertjan    schedule 11.02.2015


Ответы (4)


Я думаю, что в «Убедитесь, что установлена ​​правильная версия Visual C++» есть опечатка/пропущенное слово.

ИМХО, это должно выглядеть так: «Убедитесь, что установлена ​​правильная Распространяемая версия Visual C++».

Это ссылка на другой пункт часто задаваемых вопросов: https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Including_vcredist

person jornh    schedule 24.01.2015
comment
Я согласен, и именно так я прочитал это требование. Установлен правильный распространяемый компонент VC++. - person www.jensolsson.se; 26.01.2015
comment
Похоже, пришло время испытать Dependency Walker и сравнить с тем, что вы видите на компьютере без XP с теми же двоичными файлами. См. github.com/cefsharp/CefSharp/issues/409. - person jornh; 27.01.2015

Есть несколько потенциальных проблем, на которые вы также должны обратить внимание:

1 - указать путь к подпроцессу браузера:

var settings = new CefSettings {
BrowserSubprocessPath = "CefSharp.BrowserSubprocess.exe"
}; 

2 - установите адрес/html НЕ в вашем ctor, а в событии browser.IsBrowserInitialised (и только после проверки инициализации браузера). Короче говоря, CEF - это BIG FAT dll, для загрузки и инициализации которого требуется некоторое время... У нас будет это работает в кратчайшие сроки!

person penderi    schedule 25.01.2015
comment
К сожалению, я даже не могу выполнить новые CefSettings, поэтому ошибка гораздо раньше, скорее всего, в привязках GAC или чем-то подобном. - person www.jensolsson.se; 26.01.2015

Та же проблема здесь. ОЧЕНЬ ОЧЕНЬ раздражает. Я попробовал обходчик зависимостей, и он не дал мне никакой важной информации. Все учебники не дают соответствующей информации. Я почти уверен, что это невозможно, по крайней мере, с пакетом nuget.

person pixartist    schedule 15.04.2015

У меня была проблема, решенная в этой теме.

https://groups.google.com/forum/#!searchin/cefsharp/xp/cefsharp/J5gX7OKf7Rc/EoB3h0UmfYYJ

Если у вас есть VS2013 и некоторое время, вы можете попробовать собрать исходный код с небольшими изменениями.

  • Убедитесь, что вы выполняете сборку в режиме Release при развертывании в XP/2003.
  • Измените два проекта С++ Platform Toolset на Visual Studio 2013 - Windows XP (v120_xp)
  • Убедитесь, что на машине, на которой выполняется развертывание, установлено VC++ 2013 Redist.
person İsmail Kocacan    schedule 17.06.2015