Start Debugging

Трекер .NET 11

Одна закладка на весь цикл .NET 11.

Эта подборка собирает всё, что я писал о .NET 11: preview-версии, изменения в рантайме, обновления GC, работа JIT и новый API в BCL. Добавьте страницу в закладки - я буду поддерживать её актуальной с каждой новой preview.

С чего начать

Если вы только знакомитесь с .NET 11, начните со статей с тегом “.net 11 preview” в верхней части списка. Каждая освещает ключевые моменты одной preview. Более старые статьи остаются полезными, потому что набор возможностей .NET 11 накапливается.

Что на этой странице

Таблица ниже автоматически собирается из статей с одним из тегов: .net 11, dotnet 11, .net 11 preview, dotnet, .net. Еженедельный задачник переупорядочивает её так, чтобы свежие материалы всплывали наверх.

Если вам нужна быстрая шпаргалка вместо хронологической подборки, посмотрите сопутствующие подборки “EF Core 11 cheat sheet” и “Возможности C# 14” в индексе /pillars/.

Указатель (391 статей)

2026 / 10

  • Orleans 10.4: подписки на потоки теперь могут начинаться с самого старого сообщения в кеше

    Orleans 10.4.0 добавляет StreamSubscriptionStartPosition.EarliestAvailable, так что новый подписчик потока может получить повторно всё, что ещё находится в кеше очереди pulling agent. Также в выпуске изменены идентификаторы аргументов RPC в сетевом формате, метрики задержки запросов и скрипты персистентности для SQLite.

  • Как добавить полный открытый ключ сборки со строгим именем в InternalsVisibleTo в проекте SDK-стиля

    Подписанная сборка должна указывать дружественную сборку по полному открытому ключу из 320 символов, а не по токену, иначе сборка падает с CS1726 или CS0281. Получите ключ с помощью sn -p и sn -tp или кроссплатформенного скрипта на .NET, затем поместите его в метаданные Key элемента InternalsVisibleTo в .csproj. Также разобраны запасной вариант со свойством PublicKey, ключ DynamicProxyGenAssembly2 для Moq и ловушка с переносами строк.

  • Как отслеживать блокировку, разблокировку, вход и выход из сеанса Windows в приложении на C#

    Используйте SystemEvents.SessionSwitch в настольном или консольном приложении, переопределите OnSessionChange в службе Windows или перехватывайте WM_WTSSESSION_CHANGE самостоятельно. Код на .NET 10 для всех трёх вариантов, скрытый поток '.NET System Events', почему служба видит вход в систему, а настольное приложение нет, уведомления не по порядку и как узнать текущее состояние блокировки через WTSQuerySessionInformation.

  • NUnit 5: Assert.ThrowsAsync теперь возвращает Task, а без await тест проходит молча

    NUnit 5.0.0 делает Assert.ThrowsAsync, CatchAsync и DoesNotThrowAsync по-настоящему асинхронными. Если забыть await, проверка просто не выполнится. Что ломается, что ловит правило NUnit2059 из NUnit.Analyzers и какие ещё изменения NUnit 5 стоит проверить перед обновлением.

  • Как синхронно дождаться ValueTask в неасинхронном методе без выделения памяти

    Сначала проверьте IsCompleted и прочитайте результат через GetAwaiter().GetResult(): это стоит 0 байт. Блокируйтесь только если ValueTask ещё не завершён, и делайте это через кешированное событие и UnsafeOnCompleted вместо AsTask(), который выделяет от 72 до 208 байт на вызов. Измерено на .NET 10 и .NET 11 RC1.

  • Agent Framework 1.23: middleware функций наконец может подменить вызываемый инструмент

    Microsoft Agent Framework .NET 1.23.0 учитывает присваивание FunctionInvocationContext.Function, поэтому middleware может перенаправить вызов инструмента на другую AIFunction. Новый хелпер WrapWithPendingMiddleware сохраняет участие остальной цепочки.

  • EF.Parameter или EF.Constant в запросах EF Core 11

    EF.Constant встраивает захваченное значение в SQL как литерал, EF.Parameter превращает литерал в SQL-параметр. Оставляйте поведение EF Core по умолчанию, используйте EF.Parameter, чтобы динамически построенные деревья выражений не перекомпилировались при каждом вызове, а EF.Constant применяйте только для значений с небольшим набором вариантов и настолько перекошенными данными, что каждому нужен свой план.

  • Volatile.Read и Volatile.ReadBarrier в .NET 10

    Volatile.Read выполняет чтение одной ячейки с семантикой acquire. Volatile.ReadBarrier, новый в .NET 10, это барьер, который придаёт семантику acquire всем предшествующим чтениям. Используйте Volatile.Read для флагов и опубликованных ссылок, а ReadBarrier, когда нужно, чтобы пачка обычных или неатомарных чтений завершилась до следующего обращения к памяти, как в seqlock.

  • Исправление: dotnet test завершается с кодом 5 и "Zero tests ran" на Microsoft.Testing.Platform

    Код выхода 5 означает, что MTP отклонил параметр командной строки, а не то, что тесты отсутствуют. Запустите исполняемый файл тестов напрямую, чтобы увидеть настоящую ошибку, затем добавьте пакет расширения или направьте параметр только в нужные проекты.

  • .NET MAUI 10.0.110 исправляет шесть утечек памяти, найденных агентным охотником за утечками

    MAUI 10.0.110 содержит исправления шести утечек в BackButtonBehavior, SwipeItemView, ListView.RefreshCommand, IndicatorView, GeometryGroup и TableView. Большинство из них были заведены и исправлены рабочими процессами gh-aw, и они особенно важны, если вы используете RelayCommand из CommunityToolkit.Mvvm.

2026 / 09

2026 / 08

2026 / 07

2026 / 06

2026 / 05

2026 / 04

2026 / 03

2026 / 02

2026 / 01

2025 / 04

2025 / 01

2024 / 12

  • Что нового в C# 14.0

    Обзор всех новых возможностей C# 14.0, включая ключевое слово field, члены расширения, null-условное присваивание, неявные преобразования span и многое другое.

  • История версий языка C#

    Эволюция C# превратила его в современный высокопроизводительный язык. Это руководство отслеживает каждую важную веху. Ранние годы (C# 1.0 - 1.2). C# был выпущен в 2002 году как основной язык для .NET Framework. Он напоминал Java, но с фокусом на разработке под Windows. Версия 1.2 появилась вскоре после с небольшими...

  • Что нового в .NET 10

    Что нового в .NET 10: LTS-релиз с 3 годами поддержки, новые оптимизации JIT, девиртуализация массивов, улучшения размещения в стеке и многое другое.

2024 / 04

2023 / 11

2023 / 10

2023 / 09

2023 / 08

  • Как установить dotnet script

    dotnet script позволяет запускать C#-скрипты (.CSX) из .NET CLI. Единственное требование — наличие .NET 6 или новее на машине. Установить dotnet-script глобально можно следующей командой: Затем для выполнения файла-скрипта достаточно вызвать dotnet script <file_path>, как в примере ниже: Как...

  • C# Как дождаться завершения процесса?

    Дождаться завершения процесса можно с помощью метода WaitForExit. Ваш код синхронно подождёт, пока процесс завершится, и затем продолжит выполнение. Рассмотрим пример: Этот код запустит новый процесс cmd.exe и выполнит команду timeout 5. Вызов process.WaitForExit() заставит вашу программу...

  • .NET 8 JsonNamingPolicy: SnakeCaseLower и KebabCaseLower (System.Text.Json)

    Используйте новые `JsonNamingPolicy.SnakeCaseLower` (а также SnakeCaseUpper, KebabCaseLower, KebabCaseUpper) в .NET 8 для сериализации JSON в snake_case / kebab-case через System.Text.Json без своего конвертера.

2023 / 06

  • dotnet new api -aot: '-aot' is not a valid option

    Исправьте ошибку '-aot is not a valid option', используя правильный синтаксис с двойным дефисом: dotnet new api --aot.

  • Как начать программировать на C#

    Руководство для начинающих по началу программирования на C#: от установки Visual Studio до написания первой программы и поиска ресурсов для обучения.

  • Что нового в .NET 8

    .NET 8 был выпущен 14 ноября 2023 года как версия LTS (Long Term Support), что означает поддержку, обновления и исправления ошибок не менее трёх лет с даты выхода. Как обычно, .NET 8 включает поддержку новой версии языка C#, а именно C# 12.

Все подборки Главная