В CefSharp есть много зависимостей и библиотек, которые требуется запустить. Папки сборки загромождены. Как переместить необходимые .dll и .pak зависимости в подпапку?Как переместить зависимости и файлы CefSharp в подкаталог?
ответ
Прежде всего, чтобы все было проще, я бы рекомендовал добавить папку в Visual Studios и поместить туда все необходимые файлы. Если вы сделаете эту папку в проводнике, нажмите кнопку «показать все файлы» выше вашего решения в обозревателе решений:
Это правой кнопкой мыши папку (ы) и файл (ы), которые вы хотите включить и выбрать «включить в проект».
Не забудьте включить все необходимые CefSharp файлы - more info on github
Вы должны в конечном итоге с деревом файлов, который выглядит примерно так:
Обязательно измените «Копировать в выходной Directy» в «Копировать всегда» в свойствах для всех файлов.
Теперь код. У вашего решения должен быть файл «App.config» (если нет, google вокруг, и вы найдете способ его генерации).
Вы собираетесь добавить новый assemblyBinding
и probing
элемента к нему (MSDN - probing)
probing
элемента говорит окно он должен выглядеть в дополнительных папках для библиотек. Таким образом, мы можем загружать все необходимые DLL для CefSharp таким образом.
Пример App.config:
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="resources/cefsharp" />
</assemblyBinding>
</runtime>
</configuration>
Примечание: путь относительно расположение EXE-файла.
Теперь, когда мы заботимся о DLL-файлах, но теперь нам нужно изменить настройки для CefSharp, чтобы он знал, где искать .pak-файлы, а также локали и BrowserSubprocess.exe.
Для этого мы определим все пути к файлам и вручную назначим их CefSharp.
Вот пример того, что он должен выглядеть следующим образом:
// File location variables
static string lib, browser, locales, res;
[STAThread]
static void Main()
{
// Assigning file paths to varialbles
lib = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\libcef.dll");
browser = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\CefSharp.BrowserSubprocess.exe");
locales = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\locales\");
res = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"resources\cefsharp\");
var libraryLoader = new CefLibraryHandle(lib);
bool isValid = !libraryLoader.IsInvalid;
Console.WriteLine($"Library is valid: {isValid}");
LoadForm();
libraryLoader.Dispose();
}
[MethodImpl(MethodImplOptions.NoInlining)]
private static void LoadForm()
{
var settings = new CefSettings();
settings.BrowserSubprocessPath = browser;
settings.LocalesDirPath = locales;
settings.ResourcesDirPath = res;
Cef.Initialize(settings, shutdownOnProcessExit: false, performDependencyCheck: false);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new CefWinForm());
}
Все это взято из: https://github.com/cefsharp/CefSharp/issues/601
оригинальный вопрос было трудно полностью следовать и заставить работать должным образом, так что я думал, что я разделяю знания в случае, если кто-либо столкнется с подобной проблемой в будущем.
Примечание: Visual Studio по-прежнему будет включать файлы .dll, .pak, .xml и т. Д. В выходной каталог, но вы можете проверить, успешна ли ваша сборка, удалив зависимости из вашей основной папки (оставив папку ресурсов).
- 1. Переместить сайт в подкаталог
- 2. Переместить все файлы текущей директории в подкаталог и сохранить историю
- 3. Как переместить WordPress в подкаталог
- 4. Как переместить только файлы в подкаталог в linux
- 5. Добавить файлы и каталог в конкретный подкаталог
- 6. Как переместить каталог в подкаталог в Linux
- 7. Как скопировать файлы в подкаталог?
- 8. Как переместить подмодуль Git в подкаталог?
- 9. Как удалить подкаталог, содержащий подкаталог и текстовые файлы
- 10. Невозможно найти требуемые зависимости Cef/CefSharp
- 11. Переместить файл и каталог в подкаталог вместе с историей фиксации
- 12. Переместить страницы в подкаталог в Wordpress
- 13. Удалить и переместить файлы
- 14. wpf переместить подкаталог проекта в другое место
- 15. Пытается переместить Drupal install TO в подкаталог
- 16. Переместить содержимое каждой директории в новый подкаталог
- 17. Как переместить папки в один подкаталог на Mac?
- 18. Как перенаправить файлы в подкаталог Rails?
- 19. Как загрузить файлы в определенный подкаталог
- 20. 301 Перенаправление файлы в подкаталог в корневой подкаталог
- 21. Переместить определенный подкаталог (и все файлы в нем) на другой путь
- 22. Хотите переместить все файлы из каталогов в родительский каталог и удалить подкаталог
- 23. Как переместить файлы в корзину,
- 24. Переместить все файлы и подкаталоги из папки в другую Подкаталог той же папки
- 25. Как использовать save wav файлы в текущий подкаталог в Matlab?
- 26. Как переместить зависимости Бауэр на место
- 27. Переместить файлы переименования и zip
- 28. Как переместить проигнорированные файлы в кассе?
- 29. Переместить файлы и переименовать - однострочный
- 30. Переместить файлы в owncloud
Очень полезный учебник, спасибо. Однако вы пропустили определение «CefLibraryHandle», вы (любой, кто в нем нуждается) можете найти его здесь: https: // github.ком/cefsharp/CefSharp/BLOB/Master/CefSharp/CefLibraryHandle.cs – Jhollman