Попробовал создать Release проекта сделанного на CefSharp для WPF.
Все работало в VisualStudio, однако когда я попробовал запустить скомпилированные файлы в другой папке, то возникла следующая ошибка(не находит папку с ресурсами):
System.IO.DirectoryNotFoundException не обработано
Message: Необработанное исключение типа "System.IO.DirectoryNotFoundException" в CefSharp.Example.dll
Потратив некоторое время я нашел решение. Идем в проект CefSharp.Example, там находим класс CefExample.cs находим там такой код:
settings.RegisterScheme(new CefCustomScheme
{
SchemeName = "localfolder",
SchemeHandlerFactory = new FolderSchemeHandlerFactory(rootFolder: @"..\..\..\..\CefSharp.Example\Resources",
schemeName: "localfolder", //Optional param no schemename checking if null
hostName: "cefsharp", //Optional param no hostname checking if null
defaultPage: "home.html") //Optional param will default to index.html
});
Ошибка здесь в задании пути к ресурсам, в итоге проект ищет ресурсы там где их нет. Заменим код на следующий (замена красным цветом):
string exePath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
settings.RegisterScheme(new CefCustomScheme
{
SchemeName = "localfolder",
SchemeHandlerFactory = new FolderSchemeHandlerFactory(rootFolder: Path.Combine(exePath, "Resources"),
schemeName: "localfolder", //Optional param no schemename checking if null
hostName: "cefsharp", //Optional param no hostname checking if null
defaultPage: "home.html") //Optional param will default to index.html
});
Осталось еще установить в свойствах файлов (html, css, js файлы) ресурсов (папка /Resources ) значение «Копировать в выходной каталог» в значение «Копировать всегда».
Теперь код ищет ресурсы в папке с нашим приложением. Осталось перекомпилировать проект (в папке проекта теперь есть папка /Resources).
Теперь все будет работать.
P.S. Считаю что CefSharp самое адекватное решение для работы с chromium на данный момент.