Pass -c through to dotnet run so Release stamp and process match, assert changelog order for more than one commit, and restore the last school tab from sessionStorage when opening from the menu. Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
2.1 KiB
Markdown
32 lines
2.1 KiB
Markdown
Часть [Вне очереди](README.md). Соседей по папке не читать, если задача не про них.
|
||
|
||
# Пропуск сборки при запуске
|
||
|
||
### Зачем
|
||
|
||
`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 сравнивать
|
||
и с какой конфигурацией звать `dotnet run`; по умолчанию Debug.
|
||
|
||
**Почему.** Инкрементальный MSBuild всё равно оценивает Aspire SDK. `--no-build` это пропускает.
|
||
Клиентский TypeScript и JSONC модов не входы: Vite и каталог читают диск (`ContentRoot`), а не
|
||
`bin`. Тестовые проекты AppHost не ссылается — их правки запуск не пересобирают.
|
||
|
||
Правила «устарел ли билд» живут в трёх местах: `tools/apphost-uptodate.ps1` (Windows),
|
||
`needs_build` в `run-aspire.sh` (Ubuntu) и `LaunchBuildStamp` (то, что проверяют тесты).
|
||
Менять надо все три.
|
||
|
||
### Что не входит
|
||
|
||
Голый `dotnet run --project src/HSchool.AppHost` по-прежнему собирает — так удобнее агентам с
|
||
грязным деревом. Протокол, HTTP и сейв не трогаем.
|