Files
h-school/docs/design/off-queue.md
T
Leonid PershinandCursor 9bd1b8eea0 Skip MSBuild on run-aspire.cmd when binaries are still newer than sources.
dotnet run always evaluates the Aspire graph. A second launch after Ctrl+C should not wait on that.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-20 08:45:44 +03:00

2.3 KiB
Raw Blame History

Вне очереди

Задачи, которых нет в срезах 1–9. Это срез без номера, чтобы не спорить со срезом 10. Каждый раздел — отдельная договорённость; фазы живут в индексе в секции «Вне очереди».

Пропуск сборки при запуске

Зачем

run-aspire.cmd каждый раз вызывает dotnet run, а тот — MSBuild графа Aspire, даже когда исходники не менялись. Повторный запуск после Ctrl+C стоит десятки секунд впустую: SDK пересчитывает хост, хотя dll на месте.

Было / Стало / Почему

Было. Скрипт всегда dotnet run --project src/HSchool.AppHost. Аргументы проходили насквозь.

Стало. Если HSchool.AppHost.dll и HSchool.Server.dll новее входов (C#, csproj, props, global.json), скрипт делает dotnet run --no-build. Иначе — dotnet build, потом --no-build. --rebuild собирает всегда. Конфигурация (-c / --configuration) выбирает, какие dll сравнивать; по умолчанию Debug, как у dotnet run.

Почему. Инкрементальный MSBuild всё равно оценивает Aspire SDK. --no-build это пропускает. Клиентский TypeScript и JSONC модов не входы: Vite и каталог читают диск (ContentRoot), а не bin. Тестовые проекты AppHost не ссылается — их правки запуск не пересобирают.

Правила «устарел ли билд» живут в tools/apphost-uptodate.ps1 (то, что вызывает .cmd) и в LaunchBuildStamp (то, что проверяют тесты). Менять надо оба.

Что не входит

Голый dotnet run --project src/HSchool.AppHost по-прежнему собирает — так удобнее агентам с грязным деревом. Linux-обёртки нет: точка входа Windows — .cmd. Протокол, HTTP и сейв не трогаем.