C# Dev Kit 11.0 сводит шесть процессов в один бинарный файл Native AOT
Предварительная версия C# Dev Kit 11.0 заменяет шесть управляемых процессов одним процессом CSDevKit на Native AOT и добавляет постоянный кеш проектов. Решение Aspire из 407 проектов готово за 3.0 с вместо 84.1 с и занимает 316 МБ вместо 2 072 МБ.
6 октября 2026 года Дрю Ноукс (Drew Noakes) опубликовал в блоге .NET статью A faster, lighter C# Dev Kit. C# Dev Kit перескакивает с версии 3.3 сразу на 11.0, так что теперь его нумерация следует за .NET 11. Вместе с новым номером пришла переработка того, как расширение загружает решения в VS Code. Если вы отказались от VS Code для больших решений на C#, потому что индикатор “Loading projects…” крутился бесконечно, попробуйте снова.
Шесть управляемых процессов превратились в один бинарный файл Native AOT
C# Dev Kit 3.x запускал шесть отдельных управляемых процессов. Каждый из них поднимал среду выполнения и JIT-компилировал собственный стартовый код, прежде чем приступить к работе. Версия 11.0 объединяет их в один процесс CSDevKit, скомпилированный с Native AOT, поэтому на этом пути запуска больше не загружается среда выполнения и не работает JIT.
Языковой сервис C# (Roslyn) по-прежнему работает в отдельном процессе, поэтому приведённые ниже цифры по памяти относятся только к стороне Dev Kit. Но и так снижение велико:
| Решение | Проекты | Файлы C# | 3.3 | 11.0 |
|---|---|---|---|---|
| Orleans | 155 | 4,010 | 1,307 МБ | 208 МБ |
| Roslyn | 398 | 18,153 | 2,000 МБ | 379 МБ |
| Aspire | 407 | 4,686 | 2,072 МБ | 316 МБ |
Это примерно на 81-85% меньше памяти во всех трёх репозиториях.
Кеш проектов, который можно коммитить
Вторая половина ускорения связана с постоянным кешем проектов. При первой загрузке проекты вычисляются, а результаты сохраняются. Последующие открытия читают данные из кеша и пропускают полное вычисление на этапе проектирования. В репозитории Aspire активный файл становится доступен за 0.47 с вместо 84.1 с, а всё решение готово за 3.0 с. В Orleans активный файл занимает 0.53 с, а всё решение 2.3 с вместо 50.3 с.
В статье также сказано, что если закоммитить файлы кеша в систему контроля версий, то свежие клоны и новые git worktree сразу получают быстрые инструменты. Это важно, если вы одновременно работаете с несколькими git worktree, например для параллельных агентов-программистов. Сегодня каждый новый worktree обходится ещё одной холодной загрузкой проектов. В анонсе не перечислены имена файлов кеша и не сказано, что его инвалидирует, поэтому посмотрите, что расширение записывает в ваш репозиторий, прежде чем менять .gitignore.
Инкрементные сборки тоже ускорились. Сборка решения Aspire без изменений занимает 0.88 с вместо 34.4 с, а сборка после изменения одного файла 2.1 с вместо 36.1 с.
IntelliSense для файлов MSBuild
Версия 11.0 также добавляет поддержку языка для файлов .csproj, .props и .targets: автодополнение, диагностику, переход к определению, быстрые исправления и семантическую подсветку. Имена и версии пакетов дополняются по мере ввода, а CodeLens показывает предупреждение над пакетами с известными уязвимостями:
<ItemGroup>
<!-- package id and version now complete; vulnerable versions get a CodeLens warning -->
<PackageReference Include="MessagePack" Version="3.1.11" />
</ItemGroup>
Новое представление “C# Doctor” собирает в одном месте проверки SDK, среды выполнения, целевой платформы, восстановления пакетов и уязвимостей. Больше не нужно копаться в каналах вывода, чтобы выяснить, почему проект не загрузился.
Как попробовать предварительную версию
Версия 11.0 пока остаётся предварительной. В представлении Extensions откройте C# Dev Kit и выберите Switch to Pre-Release Version. То же можно сделать из терминала:
code --install-extension ms-dotnettools.csdevkit --pre-release
Чтобы проверить цифры по памяти на своём решении, найдите объединённый процесс после загрузки решения:
# macOS / Linux: resident memory in KB
ps -A -o rss,comm | grep -i csdevkit
О регрессиях сообщайте в microsoft/vscode-dotnettools. У переписывания такого масштаба в некоторых структурах проектов будут шероховатости, и команда собирает такие отчёты до стабильного релиза.
Comments
Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.