2.1 KiB
Часть Вне очереди. Соседей по папке не читать, если задача не про них.
Пропуск сборки при запуске
Зачем
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 (то, что вызывает run-aspire.ps1) и в
LaunchBuildStamp (то, что проверяют тесты). Менять надо оба.
Что не входит
Голый dotnet run --project src/HSchool.AppHost по-прежнему собирает — так удобнее агентам с
грязным деревом. Linux-обёртки нет: точка входа Windows — .cmd. Протокол, HTTP и сейв не
трогаем.