Files
h-school/docs/phases/off-queue/49-skip-stale-build.md
T

2.6 KiB
Raw Blame History

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

Зависимости

Нет. Скрипт запуска уже есть.

Зачем

Повторный run-aspire.cmd без правок в C# не должен ждать MSBuild графа Aspire. Сборка нужна только когда входы новее dll или когда просили --rebuild.

Задачи

  • tools/apphost-uptodate.ps1: выход 0, если AppHost и Server dll новее входов; 1 — если нет dll или вход новее. Входы: *.cs / *.csproj / *.props под src/ без bin / obj / node_modules, плюс global.json, Directory.Build.props, Directory.Packages.props. TypeScript и JSONC не входы
  • run-aspire.cmd вызывает проверку; при 0 — dotnet run --no-build и пишет, что сборка пропущена; иначе dotnet build, затем --no-build. --rebuild всегда собирает и не уходит в AppHost. -c / --configuration выбирают папку bin
  • LaunchBuildStamp с теми же правилами, тесты на временных папках без AppHostFixture
  • AGENTS.md и README.md: повторный запуск без правок — run-aspire.cmd; голый dotnet run по-прежнему собирает. --rebuild упомянут

Тесты, без которых фаза не закрыта

  • Нет dll — нужно собирать
  • Dll новее всех входов — пропускать
  • .cs новее dll — собирать
  • .ts или .jsonc новее dll — пропускать
  • Файл в bin / obj / node_modules не считается входом
  • Directory.Packages.props новее dll — собирать
  • -c Release смотрит bin/Release, а не Debug

Критерий готовности

  • Два запуска run-aspire.cmd подряд без правок: второй пишет, что сборка пропущена, и стартует AppHost
  • run-aspire.cmd --rebuild собирает даже со свежими dll
  • dotnet test проходит; тесты штампа не поднимают хост

Стоп

Не менять Aspire-граф, протокол, сейвы. Не вшивать --no-build в голый dotnet run. Не сканировать tests/ и не считать клиентский TS поводом пересобрать сервер.