Start Debugging

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.311.0
Orleans1554,0101,307 МБ208 МБ
Roslyn39818,1532,000 МБ379 МБ
Aspire4074,6862,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.

< Назад