Перейти к основному содержанию
CEF (Chromium Embedded Framework) — невероятно проблемная зависимость. Настоящий кошмар. Вот как его обновлять.

Загрузка последней стабильной сборки CEF

Перейдите сюда, скачайте последнюю стабильную сборку для Windows 64-bit и Linux 64-bit.

Обновление Xilium.CefGlue

Xilium.CefGlue — это C#-привязка, которую мы используем для CEF API. Они не обновляют upstream слишком часто, но когда это происходит, стоит влить их изменения. При конфликтах нужно принимать ИХ изменения, потому что у нас есть множество правок, которые иначе конфликтуют. Обновите CefGlue.Interop.Gen/include последними заголовками из загруженного вами пакета CEF, затем повторно запустите gen-cef3.cmd. Если в CEF API произошли изменения, возможно, потребуется обновить остальную часть CefGlue для совместимости. Сделайте это.

Обновление Robust.Natives.Cef

Это NuGet-пакеты, которые поставляют бинарники CEF обычным разработчикам RT/OpenDream, чтобы им не приходилось вручную скачивать CEF. Клонируйте build-dependencies. Распакуйте загруженные копии CEF (для обеих платформ) в natives/cef/, чтобы структура выглядела так: Обрежьте (strip) Linux-бинарники: запустите strip *.so в папке Release/ загруженной Linux-версии. Используйте WSL, если вы на Windows. Затем обновите Packages/Robust.Natives.Cef/Robust.Natives.Cef.nuspec, чтобы файлы соответствовали новой версии CEF. Вам понадобятся файлы из Release/ и Resources/ сборки CEF. Запустите dotnet pack ./Packages/Robust.Natives.Cef/Robust.Natives.Cef.csproj, чтобы получить Packages/Robust.Natives.Cef/bin/Release/Robust.Natives.Cef.<VERSION>.nupkg.

Изменение nuget.config в тестовом репозитории

Очевидно, вы будете тестировать, верно? Вы не хотите загружать вышеупомянутый нативный пакет в NuGet, если он не работает, но как проверить, что он работает? Всё просто — используйте локальный NuGet-источник! В тестируемом репозитории будет файл nuget.config рядом с solution. Он будет выглядеть так (или похоже):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
  	<add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
  </packageSources>
</configuration>
Вы можете сделать NuGet-пакет локально доступным, добавив полный путь к вашей Packages/Robust.Natives.Cef/bin/Release/ как источник:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
  	<add key="nuget" value="https://api.nuget.org/v3/index.json" />
    <add key="dotnet-eng" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" />
    <add key="cef" value="E:\ss14\build-dependencies\Packages\Robust.Natives.Cef\bin\Release" />
  </packageSources>
</configuration>

Обновление Robust.Client.WebView

После всех предыдущих шагов вы можете обновить PackageReference в Robust.Client.WebView до новой версии. После сборки и запуска, надеюсь, всё будет работать!

ТЕСТИРУЙТЕ ВСЁ

У CEF есть неприятная привычка быть огромной зависимостью, которая может ломаться миллионом способов. УБЕДИТЕСЬ, ЧТО ВЫ НИЧЕГО НЕ СЛОМАЛИ. В частности, протестируйте OpenDream на Windows, Linux и снова через launcher. Для тестирования launcher следуйте инструкции Тестирование через launcher. Используйте Tools/package_webview.py для создания zip-пакета.

Загрузка natives в NuGet

Загрузите Robust.Natives.Cef на https://www.nuget.org/. Там есть большая кнопка загрузки, используйте её. Это займёт некоторое время, так как весь пакет весит пару сотен мегабайт (ой), но, к счастью, лимитов, насколько я знаю, нет.

Коммит всего

Зафиксируйте (commit) все изменения в CefGlue, build-dependencies и Robust. Ура!

Загрузка нового Robust Module на centcomm

  • SSH на suns
  • mkdir /var/lib/robust-builds/modules/Robust.Client.WebView/<rt_version>
  • scp release/Robust.Client.WebView* suns:/var/lib/robust-builds/modules/Robust.Client.WebView/<rt_version>
  • cd /home/robust-build-push
  • ./push_module.ps1 Robust.Client.WebView <rt_version>
Последнее изменение 21 июня 2026 г.