18377
По всем вопросам- @haarrp C# - обучающий канал Senior C# разработчика. @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci - C# академия @pythonlbooks- книги📚 Реестр РКН: https://clck.ru/3Fk3kb
🔐 «Не одобряй собственные расходы» — такое правило нужно проверять на сервере
Тайсир Джуде показывает, как защитить MCP-сервер на ASP.NET Core через Microsoft Entra ID.
На примере приложения для учёта расходов автор разбирает:
• Регистрацию сервера и клиента в Entra ID.
• Вход пользователя и проверку JWT-токенов.
• Разницу между scope - разрешением приложению действовать от имени пользователя — и ролью, позволяющей одобрять расходы.
• Ограничение доступа к отдельным MCP-инструментам и фильтрацию списка доступных tools.
Самый показательный момент: пользователь с ролью согласующего может одобрить чужой отчёт, но свой сервер отклонит. Личность определяется по токену, а бизнес-правило проверяется в коде.
Модель выбирает, какой инструмент вызвать. Сервер решает, разрешено ли выполнить действие.
📖 https://bitoftech.net/2026/10/13/securing-mcp-server-microsoft-entra-id/
#aspnetcore #dotnet #mcp
⚡ Где тормозит .NET-приложение? SharpLsp покажет прямо в VS Code
В SharpLsp есть встроенный профилировщик CPU и памяти для C# и F#. Подключаешься к уже работающему процессу и смотришь, на что приложение тратит ресурсы. Перезапускать и пересобирать его не нужно.
После сбора CPU-профиля расширение подсвечивает горячие строки кода, строит flame graph и показывает функции, которые занимают больше всего процессорного времени.
Для памяти доступны отслеживание кучи, сравнение снимков и граф ссылок, помогающий понять, что удерживает объекты в памяти. Подозреваемые на утечки отображаются по мере работы приложения.
Отдельно устанавливать `dotnet-trace` не требуется. Движку профилировщика нужен runtime .NET 8 или новее, а у целевого процесса должна быть включена диагностика.
Проект открытый, под лицензией MIT, работает на Windows, macOS и Linux.
https://sharplsp.dev/blog/dotnet-profiler-vs-code-csharp-fsharp/
🌐 Новый `HttpClient` на каждый запрос? Под нагрузкой это может закончиться исчерпанием портов.IHttpClientFactory создаёт новые экземпляры клиента, но переиспользует обработчики `HttpMessageHandler` и их пулы соединений. Поэтому освобождение клиента, полученного от фабрики, не уничтожает пул после каждого запроса.
Три способа использования:
• Обычный клиент: CreateClient() для простых сценариев. Общие настройки тоже можно задать при регистрации.
• Именованный: CreateClient("github") возвращает клиент с настройками конкретного API.
• Типизированный: GitHubClient получает настроенный HttpClient через DI и скрывает детали HTTP за методами сервиса.
Например, именованный клиент:
services.AddHttpClient("github", client =>
{
client.BaseAddress = new Uri("https://api.github.com/");
client.DefaultRequestHeaders.UserAgent.ParseAdd("MyApp/1.0");
});
// При использовании:
using var client = factory.CreateClient("github");
HttpClient с настроенным PooledConnectionLifetime. Главное: управлять временем жизни соединений.
Читать полностью…
Запрос проходит через несколько сервисов, обращается к базе данных и внешним API. Пользователь видит задержку или ошибку, а по отдельным записям в журналах трудно понять, на каком участке возникла проблема.
20 октября в 20:00 на открытом уроке курса «C# разработчик. Экспертный уровень» разберёте, как OpenTelemetry помогает превратить .NET-приложение из чёрного ящика в наблюдаемую систему.
Рассмотрите наблюдаемость и роль трассировок, метрик и журналов событий в исследовании работы приложения. Узнаете, как эти данные помогают получить целостное представление о пути запроса и искать причины ошибок и задержек.
На практике добавите средства сбора телеметрии в ASP.NET Core-приложение. Создадите собственные трассировки через ActivitySource и метрики через Meter, подключите автоматический сбор телеметрии для ASP.NET Core и HttpClient.
Урок проведёт Михаил Дмитриев.
Зарегистрироваться: https://otus.pw/f8Z4/?erid=2W5zFHPwe5P
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Helm-чарты прямо из C#, без запуска `helm` 🛠
HelmSharp позволяет рендерить шаблоны и управлять релизами Kubernetes внутри .NET-приложения.
Что умеет:
• Загружать чарты из папки и .tgz.
• Объединять values.yaml с пользовательскими параметрами.
• Упаковывать чарты и работать с HTTP-репозиториями.
• Устанавливать, обновлять, откатывать и удалять релизы.
• Хранить историю релизов в Kubernetes Secrets, совместимых с Helm v3.
Для начала:
dotnet add package HelmSharp.Action
🧱 Модульный монолит легко потерять одним удобным JOIN.
Допустим, модуль заказов напрямую читает таблицы доставки. Теперь изменение схемы доставки может сломать заказы, хотя в коде всё красиво разложено по модулям.
Границы стоит закреплять и в базе:
• Отдельная схема и роль PostgreSQL для каждого модуля.
• Роль получает права только на свои данные.
• В EF Core каждому модулю выделяется собственный DbContext и подключение с его учётными данными.
• Чужие данные доступны через API, события или специально опубликованные представления с правами только на чтение.
Так случайный запрос к чужой таблице остановит сама база. А выделять модуль в отдельный сервис впоследствии будет проще.
Нюанс: отдельная схема и search_path сами по себе доступа не ограничивают. Границу обеспечивают права ролей на схемы и объекты.
https://milanjovanovic.tech/blog/how-to-keep-your-data-boundaries-intact-in-a-modular-monolith
⚡️ Microsoft переработала C# Dev Kit: меньше памяти, быстрее запуск
В версии 11.0 шесть процессов объединили в один сервер на Native AOT, добавили кэш проектов и приоритетную загрузку открытого файла.
На решении Aspire из 407 проектов Microsoft получила:
• готовность открытого файла: 0,47 секунды, ускорение до 180×;
• загрузка всего решения: 84,1 → 3 секунды;
• сборка после изменения одного C#-файла: 36,1 → 2,1 секунды;
• память сервера Dev Kit: 2072 → 316 МБ.
Последняя цифра относится только к серверу расширения: память VS Code и языкового сервиса Roslyn в сравнение не входит. Быстрая повторная загрузка использует предварительно созданный кэш.
Также появились подсказки и диагностика для .csproj, .props, .targets и C# Doctor для поиска проблем с SDK, восстановлением пакетов и окружением.
Версия доступна в Pre-Release. В VS Code откройте страницу C# Dev Kit и выберите Switch to Pre-Release Version.
https://devblogs.microsoft.com/dotnet/faster-lighter-csharp-dev-kit/
Одна задача, три языка: Rust, C# или C++?
В курсе Google *Comprehensive Rust* есть упражнение: найти длину трёхмерного вектора, а затем нормализовать его. Формула одна: √(x² + y² + z²). После этого каждую координату делим на полученную длину.
На скриншотах хорошо видна разница в стиле:
- Rust: iter().fold() собирает сумму квадратов, iter_mut() меняет координаты.
- C#: ReadOnlySpan для чтения, Span для изменения и обычный foreach.
- C++: std::vector, цикл по значениям для расчёта и по ссылкам для изменения.
Для тех, кто пишет на C#: Rust fold(0.0, ...) по смыслу близок к LINQ Aggregate(0.0, ...): оба сворачивают последовательность в одно значение через аккумулятор.
Чей вариант вам понятнее с первого взгляда?
@csharp_ci
🖥 .NET 10 научился класть объекты на стек: escape analysis в JIT
Одна из самых полезных оптимизаций в .NET 10 работает незаметно. JIT проверяет, может ли объект пережить метод, в котором его создали. Если не может, объект размещается на стеке, а не в куче. Сборщику мусора отслеживать нечего, а сам объект можно разложить на отдельные поля и оптимизировать дальше.
Раньше это работало только для простых случаев. В .NET 10 на стек попадают ещё четыре вида объектов.
Маленькие массивы фиксированного размера, причём и из значимых типов, и из ссылочных:
int[] numbers = { 1, 2, 3 }; // теперь на стеке
string[] words = { "Hello", "World!" }; // тоже на стеке
Func больше не уходит в кучу. Замыкание пока ещё аллоцируется, но это обещают доделать.foreach по IEnumerable<T> над массивом теперь инлайнится. Ещё улучшили loop inversion и раскладку кода, а на Arm64 пауз GC стало меньше на 8–20%.
🖥 C# снова показывает, что «удобный язык = медленный язык» давно не работает.
Автор ttfx портировал инструмент на C# и получил:
- до 140× быстрее Python
- до 2,12× быстрее Rust-версии 0.3.3, на которую ранее ссылался DHH
И всё это на Linux.
Современный C# здесь особенно интересен не только для backend: он отлично подходит для CLI, утилит, bash-подобных скриптов, сервисов и обычных приложений, при этом без заметной жертвы в производительности.
Хороший пример того, насколько далеко .NET ушёл от старого образа «Windows-only и тяжёлый runtime».
https://github.com/devmobasa/ttfx
⚡ .NET 11 ускорили почти везде - от JIT и GC до LINQ и networking
Stephen Toub выпустил огромный разбор производительности .NET 11. Главная идея релиза — сотни небольших оптимизаций, которые вместе заметно уменьшают allocations, количество инструкций и стоимость горячих участков кода.
Что улучшили:
- JIT лучше деvirtualизирует вызовы и инлайнит код;
- расширили escape analysis - больше временных объектов остаётся на stack вместо heap;
- убираются лишние boxing и allocations;
- ускорены коллекции, LINQ, sorting и JSON;
- улучшены SIMD, threading и networking;
- многие оптимизации работают без изменения исходного кода приложения.
-
Показательный пример: в одном из тестов обработка nullable-значения ускорилась примерно с 9,6 нс до 2 нс, а временная allocation на 24 байта исчезла полностью. В другом случае foreach по IEnumerable<int> стал примерно в 5 раз быстрее и тоже перестал создавать лишний объект.
Разбор Microsoft: https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-11/
Awesome Jev - большая подборка инструментов для новой модели TypeSafe AI 🤗
Jev - новая быстрая ИИ-модель от TypeSafe AI для принятия структурированных решений внутри программ. Она выбирает из заданных вариантов, оценивает вероятность и уверенность, вместо генерации длинного текста.
В одном репозитории собрали проекты, SDK, исследования и гайды для работы с Jev - моделью класса System One, созданной для быстрых типизированных решений внутри программ.
В подборке уже есть:
- агенты для macOS, Android и браузера;
- семантический поиск по кодовой базе;
- инструменты для проверки кода и ответов LLM;
- плагины для Codex и Claude Code;
- MCP-серверы и SDK для Python, TypeScript, Go, Rust, .NET и других языков;
- демо с Doom, Mario, StarCraft, Civilization II и управлением дроном.
Jev возвращает структурированные решения с вероятностями и оценкой уверенности. Заявленная скорость ответа - 70–500 мс, стоимость - $0,042 за 1 млн входных токенов, выходные токены бесплатны.
🔗 GitHub: https://github.com/AnotiaWang/awesome-jev
🧩 Задача на C#: почему воркер завис, хотя очередь почти пустая?
Есть канал вместимостью один элемент и единственный обработчик. Если задача завершилась ошибкой, обработчик возвращает её в очередь для повторной попытки.
using System.Threading.Channels;
var queue = Channel.CreateBounded<int>(
new BoundedChannelOptions(1)
{
FullMode = BoundedChannelFullMode.Wait,
SingleReader = true
});
await queue.Writer.WriteAsync(1);
var worker = Task.Run(async () =>
{
await foreach (var job in queue.Reader.ReadAllAsync())
{
Console.WriteLine($"Start {job}");
if (job == 1)
{
await queue.Writer.WriteAsync(2);
await queue.Writer.WriteAsync(1); // retry
}
Console.WriteLine($"Done {job}");
}
});
await worker;
await и свободные потоки пула не спасают?Task.Run для каждой повторной попытки, неограниченную очередь или отбрасывание сообщений.
C# 14: задача на Span без аллокаций
Дана строка:
42|john@example.com|127
public readonly record struct UserLog(
int Id,
ReadOnlyMemory<char> Email,
int Latency
);
static bool TryParse(
ReadOnlyMemory<char> input,
out UserLog result
)
var input = "42|john@example.com|127".AsMemory();
if (TryParse(input, out var log))
{
Console.WriteLine(log.Id); // 42
Console.WriteLine(log.Email); // john@example.com
Console.WriteLine(log.Latency); // 127
}
Unity подключила Claude Code, Codex и Grok к разработке игр 🎮
Компания опубликовала официальный плагин с 31 готовым скиллом для Unity 6+.
Агенту можно поручить конкретную задачу обычным текстом:
* создать экран настроек
* подключить внутриигровые покупки
* настроить физику или навигацию
* собрать мультиплеер и голосовой чат
* исправить проблемы со спрайтами
* настроить звук, локализацию, шейдеры и URP
Агент определяет нужную область Unity и загружает соответствующие инструкции. Плагин поддерживает Claude Code, Codex и Grok, устанавливается через их CLI и не содержит MCP-серверов или хуков.
https://github.com/Unity-Technologies/unity-agent-plugin#install
🧩 C# с подвохом: одна переменная — сколько запросов к БД?
В базе есть просроченные заказы. db.Orders — это DbSet<Order> в EF Core, а NotifyAsync к базе не обращается.
IEnumerable<Order> late = db.Orders
.Where(o => o.DueDate < today);
if (late.Any())
{
logger.LogWarning(
"{Count} late orders",
late.Count()
);
foreach (var order in late)
{
await notifier.NotifyAsync(order);
}
}
late в первой строке. И изменится ли поведение, если заменить IEnumerable<Order> на var?
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку
Окружение решает больше, чем кажется.
Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре.
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Хакинг: t.me/linuxkalii
DevOps: t.me/DevOPSitsec
Docker: /channel/+90Z5TAyfuNU5YmRi
Golang: t.me/Golang_google
Rust: t.me/rust_code
C++: t.me/cpluspluc
C#: t.me/csharp_1001_notes
Java: t.me/javatg
JavaScript: t.me/javascriptv
React: t.me/react_tg
Frontend: t.me/front
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Базы данных: t.me/sqlhub
Data Science: t.me/data_analysis_ml
Big Data: t.me/bigdatai
Математика: t.me/data_math
Физика: t.me/fizmat
Kubernetes: t.me/kubernetc
GameDev: /channel/gamedev
Haskell: t.me/haskell_tg
Собеседования и карьера:
DS собеседования: t.me/machinelearning_interview
Python собеседования: t.me/python_job_interview
Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка Frontend: /channel/addlist/mzMMG3RPZhY2M2Iy
Полезное сверху:
ИТ-мемы: t.me/memes_prog
Английский для программистов: t.me/english_forprogrammers
ИИ и технологии: t.me/vistehno
954 ГБ open-source курсов: /channel/+rKBQEMccAA01MTcy
ИТ-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Max Ai: https://max.ru/ai_machinelearning_big_data
Max python: https://max.ru/pythonl
ТЕХНО: https://max.ru/vistehno
Max Go: https://max.ru/Golang_google
Max Linux: https://max.ru/linuxkalii
Devops: https://max.ru/DevOPSitsec
C#: https://max.ru/csharp_ci
C++: https://max.ru/cpluspluc
SQL: https://max.ru/sqlhub
Java: https://max.ru/javatg
Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
🛠 У .NET появился свой аналог rustup и nvm
Microsoft представила dotnetup: менеджер для установки и обновления .NET SDK и рантаймов. Пока в публичном превью.
Всё устанавливается в папку пользователя, без sudo и прав администратора. Можно держать стабильные версии, превью и ежедневные сборки рядом, а закрепление SDK через global.json сохраняется.
Несколько полезных команд:
dotnetup init # Настроить окружение
dotnetup list # Показать установленные версии
dotnetup update # Обновить отслеживаемые версии
dotnetup sdk install preview # Установить превью SDK
Что на самом деле происходит с вашим async-методом: компилятор C# переписывает его в конечный автомат
Meziantou разобрал, во что превращается async-метод после компиляции. Сам метод становится заглушкой: она создаёт структуру-автомат, заводит билдер вроде AsyncTaskMethodBuilder, копирует параметры в поля, ставит состояние -1, вызывает Start и возвращает Task. Вся логика переезжает в MoveNext.
В Release автомат это struct, в Debug это class. Пока метод не засыпает, автомат живёт на стеке. Как только он приостанавливается, билдер упаковывает его в кучу. Поле state хранит точку возобновления: -1 значит выполняется, -2 завершён, 0 и выше номер await. В поля уходят только параметры и локальные переменные, которые нужны после await, остальные остаются локальными. Слоты под awaiter выделяются на тип, а не на каждый await, поэтому несколько await на одном типе делят одно поле.
Сам await превращается в switch по полю плюс регистрацию продолжения. Если awaiter уже завершён, код идёт дальше без остановки. Если нет, сохраняется состояние и awaiter, вызывается AwaitUnsafeOnCompleted, и MoveNext возвращается. Исключения ловятся сгенерированным try/catch и уходят в SetException, поэтому всплывают на await, а не в месте вызова. До первого незавершённого await метод выполняется синхронно.
Бенчмарки автора показывают цену этого механизма: синхронный цикл 2,7 нс, async без реального ожидания 47,9 нс, async с приостановкой на каждой итерации 8820 нс. Разница в сотни раз в горячих циклах заметна, так что await на каждом элементе лучше пересобирать. Мерить стоит только в Release, иначе картина искажается.
Источник: https://www.meziantou.net/how-the-csharp-compiler-rewrites-an-async-method.htm
Альфа-Банк ищет скиллового коллегу QA Fullstack на C#
Предлагаем полную удалёнку или гибридный график – у нас классные ИТ-офисы в Москве, Питере и Екатеринбурге.
Что нужно делать
– Разрабатывать автотесты на C#.
– Запускать функциональные, регрессионные и интеграционные тесты, включая API.
– Снижать количество дефектов в диалоге с разработкой и бизнесом.
Какие навыки важны
– Опыт автоматизации на C# и ручного тестирования от года.
– Знание API (SOAP, REST), SQL, основ клиент-серверной архитектуры и тест-дизайна.
Условия и развитие
– Сильное сообщество QA и C#-разработчиков: можно получить совет и поделиться опытом на митапе и в блоге на Хабре.
– Реальная перспектива роста: технический трек развития, в том числе до C#-лида
Оставляйте отклик по ссылке.
Задачка по C# 14: обновили проект на .NET 10, и код молча начал работать иначе
Что выведет этот код?
var c = new Counter();
c.Value = 5;
Console.WriteLine($"{c.Value} {c.Raw} {c.GetRaw()}");
class Counter
{
private int field = 100;
public int Value
{
get => field;
set => field = value;
}
public int Raw => field;
public int GetRaw() => field;
}
A) 5 5 5
😎 5 100 100
C) 5 0 100
D) Код не скомпилируется
🛠 Вышел Microsoft.Data.SqlClient 7.1.1
Обновление .NET-драйвера для SQL Server исправляет три неприятных сценария:
• Нулевые decimal-параметры могли вызывать ArgumentException, если Precision совпадала со Scale.
• Пул соединений V2 мог выдавать соединения с истёкшими или почти истёкшими токенами доступа. Теперь срок проверяется перед повторным использованием. Исправление касается приложений, явно включивших V2.
• ClearPool и ClearAllPools могли приводить к ошибке при одновременном открытии соединения. Теперь уже начатые запросы могут завершиться, а соединения из очищенного пула больше не используются повторно.
https://github.com/dotnet/SqlClient/releases/tag/v7.1.1
🦈 Открытое собеседование на Middle C# | 6 октября, 19:00 МСК
Приглашаем на открытое собеседование: Senior C# разработчик проведёт его в прямом эфире. Можно посмотреть, как всё устроено изнутри, и понять, насколько ты готов к такому интервью.
Как это будет:
📂 Собеседует Александр Моргунов — Senior C# разработчик, 7+ лет в европейских высоконагруженных сервисах. Отвечает разработчик-доброволец;
📂 Всё как на настоящем собесе: Александр задаёт те вопросы и задачи, которые даёт кандидатам на своих интервью. Заранее их никто не знает;
📂 После каждого ответа Александр даст обратную связь: что прозвучало сильно, а что стоило раскрыть иначе. Так станет понятнее, на что обращают внимание на собесе;
📂 В конце можно задать любой вопрос.
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир -> @shortcut_csharp_bot
Реклама.
О рекламодателе.
Самый неожиданный кандидат на звание самого быстрого JSON-сериализатора для .NET сейчас делает… CAPCOM.
Компания открыла REDox — высокопроизводительный движок для структурированных данных на C#, который используется как часть технологий вокруг её next-gen game engine.
REDox умеет работать не только с JSON, но и с:
- CBOR
- MessagePack
- TOML
- XML
Это компактный token-based DOM с упором на скорость и минимальные аллокации. Проект рассчитан на горячие пути вроде игровых конфигов и сериализации больших объёмов данных.
И да, речь о технологиях CAPCOM, стоящих за движком, на котором работают современные Resident Evil / Biohazard и другие игры компании.
Один из самых интересных .NET-проектов по сериализации пришёл не от Microsoft, а от разработчиков Resident Evil.
https://github.com/CAPCOM-TD-OSS/REDox
🌦️ Красивый пример того, как может выглядеть современное приложение на Aspire
Команда показала полноценную интерактивную карту погоды на Node.js с живыми прогнозами и анимированным радаром.
Под капотом:
⚡ Express + OpenTelemetry API
⚛️ React 19 + Vite
🗺️ Leaflet для карты
🛰️ анимированный погодный радар и актуальные прогнозы
🧩 всё приложение оркестрируется через TypeScript AppHost
Хороший пример Aspire не в виде очередного Hello World, а как основа для полноценного приложения из нескольких сервисов.
https://aspire.dev/reference/samples/
@csharp_ci
🐞 Когда логов недостаточно: дамп памяти из C#
Баг возникает только на проде, а локально всё работает? Дамп позволяет сохранить состояние процесса и позже изучить стеки потоков и значения переменных, не воспроизводя проблему заново.
В .NET Blog разбирают создание дампа текущего процесса из C# на Windows через нативную библиотеку dbghelp.dll. Это способ встроить сбор диагностических данных прямо в приложение.
Полезно для тех, кто разбирается с трудноуловимыми сбоями и хочет видеть больше, чем сообщение об исключении.
https://devblogs.microsoft.com/dotnet/creating-a-memory-dump-in-csharp/
🔍Тестовое собеседование с Senior C# разработчиком уже завтра
22 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика.
Как это будет:
📂 Александр Моргунов, старший C# разработчик с опытом 7+ лет в Европейских высоконагруженных сервисах, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Александру
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot
Реклама.
О рекламодателе.
🔥 Microsoft выпустила .NET 11 RC1**- первый релиз-кандидат уже с **go-live support, то есть его можно использовать в production.
Из заметного: в C# 15 стабилизируют unions и другие новые возможности языка, ASP.NET Core получил обновления SignalR и OpenAPI, а в Blazor появились экспериментальные AI-компоненты для agentic UI.
В runtime добавили in-process crash reporting для Unix и аппаратные FP16-операции для Half. В SDK улучшили dotnet test, публикацию контейнеров и file-based programs, включая Native AOT reuse.
Также обновились F#, MAUI, WinForms, NuGet и MSBuild.
.NET 11 RC1 уже поддерживается в Visual Studio 2026 Insiders и VS Code с C# Dev Kit.
https://devblogs.microsoft.com/dotnet/dotnet-11-rc-1/
🔍Тестовое собеседование с Senior C# разработчиком уже завтра
15 сентября(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle C# разработчика.
Как это будет:
📂 Александр Моргунов, старший C# разработчик с опытом 7+ лет в Европейских высоконагруженных сервисах, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Александр будет комментировать каждый ответ респондента, чтобы дать понять, чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Александру
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для C# разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_csharp_bot
Реклама.
О рекламодателе.
🔍 Куда Copilot тратит токены и почему тормозит
Барт Вуллемс показал, как отслеживать работу GitHub Copilot через OpenTelemetry и Aspire Dashboard локально.
В панели можно увидеть:
* расход входных и выходных токенов;
* использование кеша промптов;
* длительность запросов к модели;
* вызовы инструментов и время их выполнения;
* какая модель фактически обработала запрос.
Каждый ход агента отображается как цепочка операций. Это помогает понять, где возникла задержка: при генерации ответа, чтении файла, выполнении команды или обращении к MCP-серверу.
В статье - запуск Dashboard, настройки Copilot Chat в VS Code и разбор трассировок. Запись текста промптов и ответов включается отдельно через captureContent.
Статья - https://bartwullems.blogspot.com/2026/09/monitoring-github-copilot-usage-with.html
#GitHubCopilot #Aspire #OpenTelemetry