.NET / C#
3.83K subscribers
2.16K photos
40 videos
1 file
3.73K links
Лучшие материалы по разработке на платформе .NET и языке C#

Разместить рекламу: @tproger_sales_bot

Правила общения: https://tprg.ru/rules

Другие каналы: @tproger_channels

Другие наши проекты: https://tprg.ru/media
Download Telegram
BillingService для .NET MAUI — кроссплатформенные покупки

Опубликован пример реализации покупок внутри приложений для Android (Play Billing v7), iOS/Mac Catalyst (StoreKit 1) и Windows с единым интерфейсом IBillingService, DI и MVVM. В репозитории есть исходники и инструкции по настройке и тестированию.

Подробности: https://devblogs.microsoft.com/dotnet/cross-platform-billing-dotnet-maui/

#en

@dot_net_c_sharp | Другие наши каналы
Выпущен .NET 10.0.1 — декабрь 2025

По релиз-заметкам Microsoft (09.12.2025) вышел .NET 10.0.1 с исправлениями, не связанными с безопасностью: Runtime, ASP.NET Core, SDK, WinForms, EF Core, контейнерные образы и пакеты. Для .NET Framework новых обновлений нет. Рекомендуется обновиться.

Подробности: https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-december-2025-servicing-updates/

#en

@dot_net_c_sharp | Другие наши каналы
1
Как запустить WPF в Docker на Linux: эксперимент с Wine
В статье описан опыт автора по запуску WPF-приложений в Docker с использованием Wine. Решение экспериментальное, подходит для тестирования и простых приложений; указаны требования, шаги подготовки и примеры для .NET Framework и .NET Core. Как запустить WPF в Docker через Wine
В статье показаны два подхода: образ scottyhardy/docker-wine и лёгкий Alpine с установкой Wine и Wine Mono, а также схема для .NET Core с копированием Windows-версии dotnet в контейнер; приведены Dockerfile и команды сборки. WPF в Docker через Wine — практический эксперимент

В статье показано, как скопировать dotnet в контейнер и запустить WPF через Wine, перечислены ограничения (проблемы с GUI, вводом, несовместимые API), даны советы по отладке и альтернативы: Avalonia и .NET MAUI.

Читать подробнее: https://habr.com/ru/articles/975138/

#ru

@dot_net_c_sharp | Другие наши каналы
1👍1
RabbitMQ Streams: масштабирование без Kafka

Краткий обзор плагина Streams: потоковый режим даёт в 3–4 раза больше пропускной способности; Super Streams с партициями как в Kafka, Single Active Consumer, примеры .NET, нюансы кластеризации и дедупликации. Присоединяйтесь к опросу.

Читать подробнее: https://habr.com/ru/articles/974952/

#ru

@dot_net_c_sharp | Другие наши каналы
2
Централизованное управление NuGet и настройка BaGet

В статье рассказывают о переходе от nuget.exe к dotnet nuget, демонстрируют центральное управление версиями через Directory.Packages.props и Directory.Build.props и показывают, как поднять приватный BaGet в изолированной среде. NuGet: кеши, приватная галерея и BaGet

В статье — шаблон avalonia.xplat, очистка http-cache и global-packages (dotnet nuget locals --clear), настройка приватной галереи BaGet через Docker с подтягиванием пакетов из nuget.org и практические советы по загрузке пакетов и nuget.config. NuGet: подключение приватной галереи по HTTP
В статье показан XML-конфиг с параметром allowInsecureConnections=true и объясняется, что без него dotnet не будет принимать пакеты из приватной галереи. Также анонсированы будущие материалы о создании собственных NuGet-пакетов.

Читать подробнее: https://habr.com/ru/companies/eremexru/articles/975746/

#ru

@dot_net_c_sharp | Другие наши каналы
1
Миграция SharePoint 2013→2019: пошаговый план
В статье — практическое руководство через SharePoint 2016: подготовка инфраструктуры и тестовых стендов, бэкапы, установка SQL/IIS и пререквизитов (.NET, AppFabric), апгрейд контентных БД через PowerShell, перенос WSP, тестирование и решение типичных ошибок.

Читать подробнее: https://habr.com/ru/articles/975944/

#ru

@dot_net_c_sharp | Другие наши каналы
Когда логи убивают приложение: уроки Serilog
В статье объясняют, как буферы Serilog накапливают события и могут вызвать OutOfMemory, почему асинхронная отправка рискованна и какие решения — QueueLimit, локальный персистентный буфер и быстрый сериализатор — помогут избежать потерь и падений.

Читать подробнее: https://habr.com/ru/articles/972118/

#ru

@dot_net_c_sharp | Другие наши каналы
💯4
Быстрая диагностика дампов .NET и оптимизация спанов — В статье показано, как с помощью dumpheap и gcroot обнаружить массивы Pair[] и паттерны resize в Vostok.Tracing.SpanBuilder, и как предвыделение (4→16) сокращает аллокации, ускоряет выполнение и снижает GC/память.

Читать подробнее: https://habr.com/ru/companies/skbkontur/articles/975748/

#ru

@dot_net_c_sharp | Другие наши каналы
🔥1
Мёртвые языки и неожиданные лидеры в СНГ

В статье анализ вакансий: BASIC и Pascal иногда обгоняют Ruby; объясняют, почему языки исчезают или остаются в нишах (Fortran, Ada, VB), разбирают падение Ruby и штраф Почты России за утечку 26 млн записей.

Читать подробнее: https://habr.com/ru/companies/femida_search/articles/976102/

#ru

@dot_net_c_sharp | Другие наши каналы
1
Оптимизация CPU в C#: алгоритмы, параллелизм и советы для Unity
В статье разбирают выбор эффективных алгоритмов поиска и сортировок, оптимизации циклов, безопасное распараллеливание, кэширование и практические приёмы для Unity — пулы, LOD, минимизация аллокаций и рекомендации по профайлингу.

Читать подробнее: https://habr.com/ru/articles/976414/

#ru

@dot_net_c_sharp | Другие наши каналы
Как сэкономить память в C# и Unity: ключевые приёмы
В статье объясняют работу сборщика, отличие управляемой/неуправляемой памяти, когда выбирать struct вместо class, тесты производительности, предотвращение утечек, StringBuilder, пулы, профайлинг и оптимизация ресурсов для игр.

Читать подробнее: https://habr.com/ru/articles/976424/

#ru

@dot_net_c_sharp | Другие наши каналы
👎1
Опасности unsafe в C#

В статье описаны риски unsafe в .NET: перемещение GC и висячие указатели, повреждение кучи, нарушение атомарности и ошибки при (де)сериализации. Советуют fixed/GCHandle, Span, SafeHandle, GC.KeepAlive и репортить баги в dotnet/runtime.

Читать подробнее: https://habr.com/ru/articles/976636/

#ru

@dot_net_c_sharp | Другие наши каналы
4
Как сделать iOS‑виджет на .NET MAUI

В статье Toine de Boer подробно объясняет, как создать iOS‑виджет с .NET MAUI: настройка Bundle ID и App Groups, работа в Xcode/Swift, иконки, сборка .appex и интеграция в MAUI‑приложение, а также обмен данными между приложением и виджетом. Как связать .NET MAUI и iOS Widget — кратко

В статье: настройка App Groups (Entitlements.plist) и Preferences с sharedName для общего хранилища, указание appex в .csproj, обновления через WidgetKit (прокси), коммуникация через AppIntents или widgetUrl. Совет: VS Code+Copilot и Xcode Preview.

Подробности: https://devblogs.microsoft.com/dotnet/how-to-build-ios-widgets-with-dotnet-maui/

#en

@dot_net_c_sharp | Другие наши каналы
1
ReadyToRun в .NET: когда оправдана предкомпиляция
Статья объясняет, как R2R/Crossgen2 даёт AOT‑код и ускоряет холодный старт, но увеличивает размер сборок и может замедлить long‑running сценарии. Разбирают Composite R2R, статический PGO, кейсы (serverless, CLI, UI) и онлайн‑урок 18 декабря.

Читать подробнее: https://habr.com/ru/companies/otus/articles/977080/

#ru

@dot_net_c_sharp | Другие наши каналы
1👍1
Azure DevOps теперь полноценно поддерживает Microsoft.Testing.Platform

Microsoft объявила интеграцию: запуск тестов через DotNetCoreCLI (или dotnet test) с флагом --report-trx, а публикация TRX теперь учитывает повторные попытки и корректно группирует результаты. Включите AllowPtrToDetectTestRunRetryFiles: true и --retry-failed-tests.

Подробности: https://devblogs.microsoft.com/dotnet/microsoft-testing-platform-azure-retry/

#en

@dot_net_c_sharp | Другие наши каналы
Как сделать await для любого типа

Статья на Хабре показывает, как реализовать собственный awaitable: определить GetAwaiter(), awaiter с IsCompleted, OnCompleted и GetResult(). В примере DelayAwaitable даёт задержку без Task и ведёт себя как Task.Delay, но для произвольных событий. Как создать собственный await в C# — простая реализация

В статье показано, как реализовать await/awaiter через GetAwaiter(), IsCompleted, OnCompleted и GetResult(). Приведены примеры с таймером и ожиданием события (ManualResetEvent) и объясняется, когда полезно делать свой await вместо Task/ValueTask.

Читать подробнее: https://habr.com/ru/companies/otus/articles/977074/

#ru

@dot_net_c_sharp | Другие наши каналы
Давка кэша в C#: почему ConcurrentDictionary и MemoryCache не спасают

В статье показано, как cache stampede приводит к многократным тяжёлым запросам, приведены бенчмарки для IO/CPU-bound задач и сравнение с HybridCache, а также предложены подходы для защиты кэша. Давка кэша в .NET: чем опасны ConcurrentDictionary и MemoryCache

В статье показано, что GetOrAdd и GetOrCreateAsync не гарантируют единичный вызов тяжёлой операции; HybridCache защищает внутри процесса, но не между репликами. Практические рекомендации по выбору и обходам проблемы. Как уменьшить давку кэша: джиттер TTL и Single Flight

В статье предлагают добавлять случайный джиттер к TTL (FusionCache поддерживает это) и применять паттерн Single Flight на уровне L2, чтобы только одна реплика обновляла тяжёлые данные. Автор не нашёл готовых библиотек.

Читать подробнее: https://habr.com/ru/articles/977498/

#ru

@dot_net_c_sharp | Другие наши каналы
Как Dodo Brands перешли от Google Таблиц к собственной HR‑платформе
В статье рассказывается, как из‑за лимитов и сбоев Google‑таблиц в 2022 началась миграция: сравнили покупные решения и разработку, выбрали собственную платформу на PostgreSQL, запустили во II кв. 2023 и автоматизировали оценку, зарплаты и HR‑процессы.

Читать подробнее: https://habr.com/ru/companies/dododev/articles/968050/

#ru

@dot_net_c_sharp | Другие наши каналы
Как найти госзаказы с помощью MSSQL 2025 и векторного поиска

Автор описывает систему: Vector в MSSQL, модель ai-forever/ru-en-RoSBERTa, Python+RabbitMQ и .NET Core для индексации закупок, сравнения с профилем и анализа документов через pandoc и LLM. Демо: artemtender.ru Госпортал не нашёлся — доработка под 1C/Касперский/АстраЛинукс

В статье автор рассказывает, что вместо областного портала попались проекты под конкретных исполнителей — правки проприетарных решений. Это может быть интересно профильным поставщикам; автор делится опытом.

Читать подробнее: https://habr.com/ru/articles/978104/

#ru

@dot_net_c_sharp | Другие наши каналы
Bulkhead в .NET — защита ресурсов

В статье разобран Bulkhead‑паттерн: изоляция групп запросов, чтобы сбой или перегрузка в одной части не вывели из строя всю систему. Приведены реализации через SemaphoreSlim и Polly.BulkheadAsync с лимитами и очередью, и практические советы. Bulkhead в .NET — как защитить сервисы от перегрузок

В статье показано, как через семафоры, ConcurrentExclusiveSchedulerPair и Polly BulkheadAsync (пример: 5 одновременных + очередь) ограничивать вызовы и в связке с Circuit Breaker/Retry не дать одному тяжёлому участку парализовать систему.

Читать подробнее: https://habr.com/ru/companies/otus/articles/977078/

#ru

@dot_net_c_sharp | Другие наши каналы
Как оценивают ремонт нейросетью
В статье автор описывает сбор датасета, обучение трёх моделей (детектор, фильтр, регрессор), интеграцию с краулером и Telegram‑ботом, тесты локальных LLM и подбор лучшей модели qwen2.5vl:7b.

Читать подробнее: https://habr.com/ru/articles/978916/

#ru

@dot_net_c_sharp | Другие наши каналы