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>
2.6 KiB
2.6 KiB
Фаза 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выбирают папкуbinLaunchBuildStampс теми же правилами, тесты на временных папках безAppHostFixtureAGENTS.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собирает даже со свежими dlldotnet testпроходит; тесты штампа не поднимают хост
Стоп
Не менять Aspire-граф, протокол, сейвы. Не вшивать --no-build в голый dotnet run. Не
сканировать tests/ и не считать клиентский TS поводом пересобрать сервер.