This week in .NET 02.10.2026

This week in .NET 02.10.2026

Artem

Новости

Rider 2026.2.3 Is Released!

В Rider 2026.2.3 появилась новая штука для поиска проблем с производительностью. Теперь прямо из окна Monitoring можно отправить свежий snapshot на разбор AI Assistant. Он подключит dotTrace, посмотрит, где приложение тратит больше всего времени, и попробует подсветить узкие места.

Пока функция работает только на Windows. Также понадобится подписка dotUltimate или All Products Pack вместе с AI Assistant.

Aspire 13.6: Your dashboard gets memory

В Aspire 13.6 Dashboard научился сохранять данные между запусками. Раньше после остановки AppHost логи, трейсы и состояние ресурсов пропадали. Теперь к ним можно вернуться и после перезапуска приложения. Заодно в Dashboard добавили возможность открыть shell внутри контейнера, а в Aspire появилась официальная поддержка хостинга Java и Rust приложений.

Статьи

Build Agentic UI with the new Blazor AI components

Microsoft представила экспериментальные Blazor-компоненты для Agentic UI. Идея в том, чтобы не ограничиваться обычным чатиком с LLM: компоненты умеют отображать streaming-ответы, вызовы tools, процесс выполнения задач, approval'ы и shared state между приложением и агентом. Всё это можно комбинировать с Microsoft.Extensions.AI, Agent Framework, AG-UI и Aspire. Для экспериментов понадобится .NET 11 RC1.

C# 15 Collection Expression Arguments: What's New vs C# 12 and 13

В C# 15 collection expressions получили новый синтаксис with(...), который позволяет передавать параметры создания коллекции прямо внутри [...]. Например, можно сразу задать capacity или передать comparer в собственный collection builder. Автор на примерах показывает отличие от C# 12/13 и разбирает ограничения — например, для массивов и Span такой синтаксис не работает.

Интересное

Поменяли object на Lock, и два потока встретились в критической секции

Интересный разбор одной неочевидной особенности System.Threading.Lock.

Оказывается, просто заменить object на Lock бывает недостаточно: компилятор выбирает механизм синхронизации по статическому типу выражения. Если переменная имеет тип Lock, то используется новый механизм. Если тот же объект привести к object, то код уже будет работать через старый Monitor.

В итоге два участка программы могут синхронизироваться на одном и том же объекте, но при этом одновременно оказаться внутри критической секции.

В статье есть небольшой воспроизводимый пример, объяснение предупреждения CS9216 и сравнение расхода памяти.

My coding agent wrote outside the repo. Nothing stopped it.

Статья о том, как ограничивать доступ coding agents к файловой системе.

Если просто написать в системном промпте что-то вроде "не выходи за пределы репозитория", реальной защитой это не станет. Когда инструмент принимает произвольный путь, агент технически все равно может записать файл в другое место.

Автор предлагает решать проблему на уровне архитектуры: использовать виртуальную файловую систему с заранее разрешенными mount point'ами, а прямую работу с System.IO запрещать через Roslyn analyzer.

Материал завязан на конкретную реализацию, но сама идея довольно универсальная: ограничения для агента лучше задавать кодом и правами доступа, а не надеяться на текст инструкции.

Report Page