TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.75K subscribers
Post #2519 2.87K
День 2084. #ЧтоНовенького
Готовимся к .NET 9
Релиз .NET 9 уже скоро. .NET 9 RC 1 (вышел 10 сентября) уже поставляется с лицензией Go-Live, что означает, что он поддерживается Microsoft для использования в производственных средах. Если вы в настоящее время используете .NET 6 или более новую версию, процесс миграции на .NET 9 довольно прост. Вот несколько ключевых шагов.

1. Обновите зависимости
Это всегда хорошая практика перед миграцией, многие проблемы несовместимости часто решаются таким образом. Отличным инструментом, помогающим в этом, является dotnet-outdated. Чтобы проверить наличие устаревших пакетов, выполните:
dotnet outdated <solution/project folder>

Он даже может обновить пакеты для вас.

2. Удалите устаревшие целевые фреймворки
Если вы всё ещё используете устаревшие фреймворки, такие как net7.0, пришло время избавиться от них. Многие новые сборки .NET 9 нацелены только на .NET 8 и выше. Если вам нужно сохранить совместимость с .NET 6, вы можете использовать условные операторы в ссылках на пакеты в качестве временного решения, например:
<PackageReference Condition=" '$(TargetFramework)' == 'net6.0' " Include="Verify.Http" Version="5.0.1" />
<PackageReference Condition=" '$(TargetFramework)' != 'net6.0' " Include="Verify.Http" Version="6.3.0" />


3. Обновите global.json
Простой способ обновить global.json — удалить его и запустить
dotnet new globaljson

Эта команда создаст global.json, соответствующий версии SDK, который будет без проблем работать в вашем конвейере CI/CD.

4. Добавьте целевую платформу net9.0
Добавьте моникер целевой платформы net9.0 в проект, используя свойство MSBuild TargetFrameworks (если вы используете TargetFramework сегодня и хотите использовать многоцелевую платформу, её необходимо указать в TargetFrameworks), например:
<TargetFrameworks>net9.0;net8.0</TargetFrameworks>

После 12 ноября 2024 поддерживаемыми платформами останутся:
- .NET 8 (Long Term Support - до 10 ноября 2026)
- .NET 9 (Standard Term Support - 18 месяцев с даты релиза).

5. Соберите проект и устраните проблемы
После того, как вы всё настроите, соберите решение и устраните все возникающие проблемы:
- Проблемы с исходным кодом. Возможно, у вас есть методы, которые будут конфликтовать с новинками .NET 9, например, метод расширения Index для IEnumerable<T>.
- Ошибки/предупреждения зависимостей. .NET 9 SDK более открыто сообщает о пакетах с проблемами безопасности или устаревшими зависимостями. Даже транзитивные зависимости (те, на которые вы не ссылаетесь напрямую) могут вызывать предупреждения. Здесь поможет команда
dotnet nuget why <solution/project folder> <packageid>

Вы можете либо закрепить определённые версии, либо перейти на заменяющие пакеты. Одним из распространённых примеров является System.Text.Json, на старые и устаревшие версии которого ссылаются многие пакеты. Явно добавляя ссылку на пакет, вы закрепляете версию, используемую вашим проектом, например:
<PackageReference Include="System.Text.Json" Version="8.0.4" />

Централизованное управление пакетами — хороший вариант для решения в одном месте для обработки версий пакетов, включая транзитивные.

Итого
Фактически, вы можете начать использовать новый .NET 9 SDK сегодня, продолжая ориентироваться на старые фреймворки и получая доступ к новым функциям времени сборки, оставаясь в текущей среде выполнения. В целом, особых проблем быть не должно.

Источник: https://www.devlead.se/posts/2024/2024-09-22-preparing-for-dotnet-9
  • 👍 15
More from @netdeveloperdiary
  1. Oct 6, 2026🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК Приглашаем на открытое собес…
  2. Oct 6, 2026День 2806. #ЗаметкиНаПолях Типы Коллекций в .NET, Которые Стоит Попробовать. Начало Больши…
  3. Oct 5, 2026День 2805. #ЧтоНовенького #NET11 Аргументы в Выражениях Коллекций в C#15 В C#15 реализован…
  4. Oct 4, 2026День 2804. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
  5. Oct 3, 2026Post #3360
  6. Oct 3, 2026День 2803. #Оффтоп Чем Заняться, Пока Работают Агенты? У VS Code Есть Ответ Сейчас большую…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →