# Debug и Release export для Windows x64 ## Требования - официальный Godot 4.7.1 Mono; - export templates той же версии; - .NET SDK 8; - PowerShell 5.1 или новее. ## Native Video `addons/native_video` — runtime GDExtension, а не editor-addon: его манифест и Windows DLL автоматически входят в оба export-пресета. Для MP4/MOV/M4V проект работает с рендерером Mobile (Vulkan); Compatibility для этого расширения не подходит. После каждого export нужно проверить воспроизведение реального ролика на целевом GPU, потому что headless smoke не создаёт RenderingDevice. ## Пресеты В проекте есть два самостоятельных Windows-пресета: - `Windows x64 Release` — production-фича, без debug symbols и консольного wrapper; - `Windows x64 Debug` — development-фича, с debug symbols, исходниками C# и консольным wrapper. В Godot режим шаблона всё равно определяется действием экспорта. Для гарантированного результата используйте скрипт ниже: он вызывает `--export-release` или `--export-debug` в соответствии с выбранной конфигурацией. ## Сборка Из корня проекта: ```powershell powershell -NoProfile -ExecutionPolicy Bypass -File .\tools\export-windows.ps1 ``` Эта команда равнозначна явной Release-сборке: ```powershell .\tools\export-windows.ps1 -Configuration Release ``` Отладочная сборка: ```powershell .\tools\export-windows.ps1 -Configuration Debug ``` Другой путь к Godot передаётся явно: ```powershell .\tools\export-windows.ps1 -Configuration Release -GodotPath "D:\Godot\Godot_v4.7.1-stable_mono_win64.exe" ``` Результат создаётся в новом каталоге `artifacts/windows/Exchanger-0.6.0--YYYYMMDD-HHMMSS/`; существующие сборки не перезаписываются. Release-файл называется `Exchanger.exe`. Debug создаёт основной `Exchanger.Debug.exe` и консольный wrapper `Exchanger.Debug.console.exe`. ## Изоляция production-проекта Скрипт создаёт временную staging-копию внутри `artifacts/export-staging`, проверяет абсолютный путь перед каждым рекурсивным удалением и очищает staging в `finally`. В staging и PCK не попадают: - `.git`, `.godot`, `.agents`, `.vscode`; - `references/`, `tests/`, `tools/`, `docs/`, `artifacts/`; - все editor/development addons. Из staging-версии `project.godot` удаляются editor plugins и два development-autoload: `GodotxToast` и `_mcp_game_helper`. Исходный проект при этом не меняется, поэтому редакторская автоматизация продолжает работать после экспорта. ## Состав и проверка Оба пресета встраивают PCK и .NET outputs в EXE. Release не включает debug symbols и C#-исходники; Debug включает их и использует консольный wrapper. Тестовые сборки и editor-addon файлы не входят ни в один вариант. Контрольный экспорт 2026-09-02: - Debug: `Exchanger.Debug.exe` — 185175952 байта, console wrapper — 91136 байт; - Release: один `Exchanger.exe` — 190151408 байт; - оба основных EXE завершили headless smoke с mock-оборудованием и exit code 0; - эти контрольные файлы не подписаны Authenticode; подпись остаётся отдельным release-шагом. Короткий автоматический smoke-run без открытия окна: ```powershell $exe = ".\artifacts\windows\\Exchanger.exe" Start-Process $exe -ArgumentList "--headless", "--quit-after", "180", "--no-theme-dlc" -Wait ``` Первый проверенный export 0.6.0 содержал 189 файлов и занимал 180,8 МиБ; headless smoke завершился с exit code 0. Эти числа являются диагностическими и могут меняться вместе с Godot/.NET. ## Перед релизом - выполнить `dotnet test Exchanger.sln`; - установить актуальный `active_theme.pck` либо отдельно проверить fallback; - проверить реальный COM-порт и аппаратную приёмку; - выполнить чистую установку на отдельном Windows-устройстве; - при необходимости подписать EXE и DLL; - сохранить checksum каталога релиза и совместимую версию конфигурации контроллера.