es
Feedback
Библиотека шарписта | C#, F#, .NET, ASP.NET

Библиотека шарписта | C#, F#, .NET, ASP.NET

Ir al canal en Telegram

Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Mostrar más

📈 Análisis del canal de Telegram Библиотека шарписта | C#, F#, .NET, ASP.NET

El canal Библиотека шарписта | C#, F#, .NET, ASP.NET (@csharpproglib) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 21 873 suscriptores, ocupando la posición 6 218 en la categoría Tecnologías y Aplicaciones y el puesto 30 852 en la región Rusia.

📊 Métricas de audiencia y dinámica

Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 21 873 suscriptores.

Según los últimos datos del 09 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -88, y en las últimas 24 horas de -7, conservando un alto alcance.

  • Estado de verificación: No verificado
  • Tasa de interacción (ER): El promedio de interacción de la audiencia es 11.86%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 7.09% de reacciones respecto al total de suscriptores.
  • Alcance de las publicaciones: Cada publicación recibe en promedio 2 594 visualizaciones. En el primer día suele acumular 1 550 visualizaciones.
  • Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 9.
  • Intereses temáticos: El contenido se centra en temas clave como .net, шарписта, навигация, await, string.

📝 Descripción y política de contenido

El autor describe el recurso como un espacio para expresar opiniones subjetivas:
Все самое полезное для C#-разработчика в одном канале. По рекламе: @proglib_adv Учиться у нас: https://proglib.io/w/b60af5a4 Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5c81cdc130259d5b7fead

Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 10 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.

21 873
Suscriptores
-724 horas
-187 días
-8830 días
Archivo de publicaciones
🤖 Ваш ИИ-агент съедает бюджет на токены и падает при сбоях API? Пора переходить на новый уровень. Открыли продажи курса по AgentOps — управлению ИИ-агентами в рабочих процессах. Рынок требует инженеров, которые умеют: • Контролировать метрики и качество ответов; • Эффективно работать с RAG-архитектурой; • Строить системы, готовые к реальным нагрузкам. Обучение займет 6-12 недель под руководством практиков с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, МТС, Huawei, Raft и др. 🎁 Можно подождать, пока про AgentOps начнут говорить все. Или зайти сейчас — НА 30% ДЕШЕВЛЕ!
Работа с AI начинается с систем. Системы — с AgentOps.
🔥 Забрать скидку и изучить программу.

🔄 Апрельские обновления безопасности 2026 .NET Microsoft выпустила плановые обновления для .NET 8, 9, 10 и .NET Framework. В
🔄 Апрельские обновления безопасности 2026 .NET Microsoft выпустила плановые обновления для .NET 8, 9, 10 и .NET Framework. В этот раз пакет преимущественно про безопасность, ведь закрыто шесть CVE. Три типа уязвимостей затронули сразу несколько версий: CVE-2026-23666 — отказ в обслуживании (DoS) в .NET Framework 3.0, 4.6.2–4.8.1 CVE-2026-26171 — обход защитного механизма. Затронуты .NET 8, 9, 10 и .NET Framework 2.0, 4.6.2–4.8.1 CVE-2026-32178 — удалённое выполнение кода (RCE). Затронуты .NET 8, 9, 10 и .NET Framework 2.0, 4.6.2–4.8.1 CVE-2026-32203 — DoS в .NET 8, 9, 10 и .NET Framework 2.0, 4.6.2–4.8.1 CVE-2026-32226 — DoS только в .NET Framework 2.0, 4.6.2–4.8.1 CVE-2026-33116 — RCE в .NET 8, 9, 10 ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news

😊 Маппинг объектов без рефлексии и без оверхеда Маппинг между моделями это одна из самых скучных вещей в C#-разработке. AutoMapper решает проблему, но тянет рефлексию в рантайме. FreakyKit.Forge генерирует весь маппинг-код на этапе компиляции через Roslyn source generators. Вы объявляете partial-метод, библиотека генерирует его реализацию при сборке. Никакой рефлексии, никаких зависимостей в рантайме. Установка:
<ItemGroup>
    <PackageReference Include="FreakyKit.Forge.Generator" Version="1.0.0" />
    <PackageReference Include="FreakyKit.Forge.Analyzers" Version="1.0.0" />
</ItemGroup>
Как это работает Помечаем статический класс атрибутом [Forge] и объявляем метод без тела:
using FreakyKit.Forge;

public class Person    { public string Name { get; set; } public int Age { get; set; } }
public class PersonDto { public string Name { get; set; } public int Age { get; set; } }

[Forge]
public static partial class PersonForges
{
    public static partial PersonDto ToDto(Person source);
}
При компиляции Forge генерирует реализацию:
public static partial PersonDto ToDto(Person source)
{
    var __result = new PersonDto();
    __result.Name = source.Name;
    __result.Age = source.Age;
    return __result;
}
Вызов выглядит так:
var dto = PersonForges.ToDto(person);
Возможности Базовый сценарий это маппинг по совпадению имён. Но библиотека умеет больше. Переименование полей через [ForgeMap]:
public class Source { [ForgeMap("Name")] public string FirstName { get; set; } }
public class Dest   { public string Name { get; set; } }
Вложенные объекты с AllowNestedForging:
[Forge]
public static partial class PersonForges
{
    public static partial AddressDto ToAddressDto(Address source);

    [ForgeMethod(AllowNestedForging = true)]
    public static partial PersonDto ToDto(Person source);
}
// Генерирует: __result.Home = ToAddressDto(source.Home);
Коллекции обрабатываются автоматически — List<T>, T[], ImmutableArray<T> и другие. Если типы элементов отличаются, достаточно включить AllowNestedForging. Обновление существующего объекта вместо создания нового — метод с двумя параметрами и void:
public static partial void Update(Person source, PersonDto existing);
// Генерирует: existing.Name = source.Name; existing.Age = source.Age;
Строгий режим для отлова расхождений при рефакторинге:
[ForgeMethod(StrictMapping = true)]
public static partial PersonDto ToDto(Person source);
// Если добавить поле в Source или Dest — компилятор выдаст ошибку, не предупреждение
Тип-конвертеры для несовместимых типов:
[ForgeConverter]
public static string ConvertDateTime(DateTime value) => value.ToString("yyyy-MM-dd");
// Forge сам найдёт подходящий конвертер и применит его при маппинге
Диагностика Пакет FreakyKit.Forge.Analyzers добавляет 35 диагностических правил. Ошибки в объявлениях маппингов вы увидите прямо в редакторе при сборке, а не в рантайме. ➡️ Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

🤖 Подборка вакансий для шарпистов Team Lead C# — от 350 000 ₽ в офис или на удалёнку в Москве Программист C#/С++/. NET (Middle) — до 400 000 ₽, офис в Москве Backend .NET developer ( Middle/Middle+) — удалёнка ➡️ Еще больше топовых вакансий — в нашем канале C# Jobs 🐸 Библиотека шарписта

🚀 .NET 11 Preview 3 Вышел третий превью-релиз .NET 11. Обновления затронули рантайм, SDK, библиотеки, ASP.NET Core, EF Core
🚀 .NET 11 Preview 3 Вышел третий превью-релиз .NET 11. Обновления затронули рантайм, SDK, библиотеки, ASP.NET Core, EF Core и .NET MAUI. Разберём главное. • Библиотеки System.Text.Json получил больше контроля над именованием полей и обработкой значений по умолчанию. Алгоритм сжатия Zstandard переехал в System.IO.Compression — теперь он часть стандартной библиотеки, а не отдельный пакет. ZIP-чтение добавило валидацию CRC32. Regex теперь корректно обрабатывает все Unicode-последовательности переноса строки. • Рантайм Runtime async больше не требует явного opt-in через атрибут — функция стала стабильнее и готовится к основному потоку. JIT-компилятор улучшил оптимизацию switch-выражений, проверок границ массивов и операций приведения типов. Для WebAssembly добавлена поддержка WebCIL и улучшена отладка в браузере. • SDK dotnet run теперь принимает переменные окружения прямо из командной строки:
dotnet run -e MY_VAR=value
Solution-фильтры можно редактировать через CLI без открытия IDE. Файловые приложения теперь можно разбивать на несколько файлов. dotnet watch получил поддержку Aspire, восстановление после краша и улучшения для Windows Desktop. • C# Добавлена начальная поддержка типа union это размеченные объединения в духе F# или Rust. Пока preview, но направление понятное. • ASP.NET Core Поддержка Zstandard для сжатия ответов и распаковки запросов. Компонент Virtualize в Blazor теперь адаптируется к элементам с переменной высотой в рантайме. HTTP/3 начинает обрабатывать запросы раньше — меньше задержек на старте соединения. • Entity Framework Core ChangeTracker.GetEntriesForState() позволяет получать записи по состоянию без лишнего обнаружения изменений. DbContext теперь умеет удалять провайдеры и добавлять пулы фабрик. SQL-генератор стал убирать лишние JOIN-ы, а для SQL Server добавлены JSON API. • Контейнеры Образы .NET на mcr.microsoft.com теперь подписываются. Можно верифицировать их подлинность перед запуском. • .NET MAUI Maps API получил кластеризацию маркеров, стилизацию и расширенное API взаимодействия. LongPressGestureRecognizer теперь встроен в платформу. Добавлена поддержка Android 17 / API 37 в режиме preview. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news

💻 Плавающие окна в Visual Studio Если вы работаете с несколькими мониторами, вы наверняка отрывали Solution Explorer или окн
💻 Плавающие окна в Visual Studio Если вы работаете с несколькими мониторами, вы наверняка отрывали Solution Explorer или окно отладчика на второй экран. Это удобно, но поведение плавающих окон по умолчанию бывает раздражающим: они не отображаются отдельными кнопками в панели задач Windows, сворачиваются вместе с основным окном IDE и всегда остаются поверх остальных окон. В Visual Studio есть настройка, которая это меняет. Где найти Tools > Options > Environment > Windows > Floating Windows Там есть выпадающий список «These floating windows are owned by the main window» с тремя вариантами: • None — плавающие окна полностью независимы: у каждого своя кнопка в панели задач, они остаются на экране при • сворачивании IDE и не лезут поверх других приложений. • Tool Windows — значение по умолчанию. Документы плавают свободно, а панели инструментов привязаны к IDE. • Documents and Tool Windows — классическое поведение Visual Studio: всё подчиняется главному окну. Двойной клик с зажатым Ctrl по заголовку любой панели мгновенно переключает её между плавающим и закреплённым состоянием. ➡️ Блог разработчиков 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

💡 Фриланс для разработчиков Вы ищете заказы там, где их ищут все. А локальный бизнес даже не знает о существовании биржи — И
+5
💡 Фриланс для разработчиков Вы ищете заказы там, где их ищут все. А локальный бизнес даже не знает о существовании биржи — ИП пишут в чатах «посоветуйте программиста» или листают Авито. Будьте там, где нет толпы. ➡️ Остальные 4 способа найти первые проекты без бирж 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта

💡 MCP-сервера на F# без лишнего кода MCP (Model Context Protocol) набирает популярность как способ подключать инструменты к языковым моделям. Но писать MCP-серверы на C# многословно, а на чистом .NET SDK — тем более. FsMcp решает эту задачу для F#-разработчиков: типобезопасный DSL, минимум шаблонного кода, интеграция с экосистемой .NET. Что это такое FsMcp это обёртка над официальным [Microsoft ModelContextProtocol .NET SDK](https://github.com/modelcontextprotocol/csharp-sdk). Библиотека добавляет поверх него computation expressions, типизированные обработчики инструментов и Result-based обработку ошибок. Установка через NuGet:
dotnet add package FsMcp.Server
Дополнительные пакеты по необходимости:
dotnet add package FsMcp.Client     # клиент
dotnet add package FsMcp.Testing    # тест-хелперы
dotnet add package FsMcp.Server.Http  # HTTP/SSE транспорт
dotnet add package FsMcp.Sampling   # вызов LLM из инструментов
Как это работает Сервер описывается через mcpServer { } — computation expression, внутри которого объявляются инструменты, ресурсы и промпты. Инструмент принимает F#-запись как входные данные, JSON Schema генерируется автоматически через TypeShape:
type GreetArgs = { name: string; greeting: string option }

let server = mcpServer {
    name "MyServer"
    version "1.0.0"

    tool (TypedTool.define<GreetArgs> "greet" "Greets a person" (fun args -> task {
        let greeting = args.greeting |> Option.defaultValue "Hello"
        return Ok [ Content.text $"{greeting}, {args.name}!" ]
    }) |> unwrapResult)

    useStdio
}

Server.run server |> fun t -> t.GetAwaiter().GetResult()
Поле greeting помечается как необязательное автоматически, потому что тип string option. Пример с калькулятором:
type CalcArgs = { a: float; b: float }

let server = mcpServer {
    name "Calculator"
    version "1.0.0"

    tool (TypedTool.define<CalcArgs> "add" "Add two numbers" (fun args -> task {
        return Ok [ Content.text $"{args.a + args.b}" ]
    }) |> unwrapResult)

    tool (TypedTool.define<CalcArgs> "divide" "Divide a by b" (fun args -> task {
        if args.b = 0.0 then return Error (TransportError "Division by zero")
        else return Ok [ Content.text $"{args.a / args.b}" ]
    }) |> unwrapResult)

    useStdio
}
Ошибки возвращаются через Result<'T, McpError> без исключений на ожидаемых путях. HTTP-транспорт Если нужен не stdio, а HTTP/SSE:
open FsMcp.Server.Http

HttpServer.run server (Some "/mcp") "http://localhost:3001"
|> fun t -> t.GetAwaiter().GetResult()
Тестирование FsMcp.Testing позволяет вызывать инструменты напрямую, без сетевого соединения и запуска процессов:
open FsMcp.Testing

let result =
    TestServer.callTool serverConfig "add"
        (Map.ofList ["a", jsonEl 10; "b", jsonEl 20])
    |> Async.AwaitTask |> Async.RunSynchronously

result |> Expect.mcpHasTextContent "30" "addition works"
Что ещё есть в библиотеке FsMcp покрывает не только базовый сценарий. Среди возможностей: стриминговые инструменты через IAsyncEnumerable<Content>, уведомления о прогрессе, валидационный middleware, трассировка через OpenTelemetry, горячая замена инструментов (DynamicServer.addTool) и интеграция с FsToolkit.ErrorHandling через пакет FsMcp.TaskApi. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

🤩 Agent Skills в .NET: три способа создать, один провайдер для запуска Когда строишь агента, рано или поздно сталкиваешься с проблемой: навыки разрабатывают разные команды, в разное время, в разных форматах. Microsoft Agent Framework теперь поддерживает три подхода к написанию скиллов и объединяет их в одном провайдере без лишней конфигурации. Какую боль решает Раньше приходилось либо ждать, пока всё будет готово, либо переписывать логику под один формат. Теперь можно добавлять навыки постепенно: один пришёл из файловой системы, второй из NuGet-пакета, третий написан прямо в коде как временная заглушка. Агент не различает их — он просто выбирает нужный по контексту. Три способа создать скилл 1️⃣ Файловый скилл Навык живёт как директория на диске: SKILL.md с инструкциями, скрипты и референсные документы:
skills/
└── onboarding-guide/
    ├── SKILL.md
    ├── scripts/
    │   └── check-provisioning.py
    └── references/
        └── onboarding-checklist.md
В SKILL.md описываем метаданные и шаги для агента. Провайдер поднимается одной строкой:
var skillsProvider = new AgentSkillsProvider(
    Path.Combine(AppContext.BaseDirectory, "skills"),
    SubprocessScriptRunner.RunAsync);
2️⃣ Классовый скилл из NuGet Команда HR-систем публикует Contoso.Skills.HrEnrollment. Внутри — класс, унаследованный от AgentClassSkill<T>. Ресурсы помечаются атрибутом [AgentSkillResource], скрипты — [AgentSkillScript]. Рефлексия сама находит всё нужное:
public sealed class BenefitsEnrollmentSkill : AgentClassSkill<BenefitsEnrollmentSkill>
{
    public override AgentSkillFrontmatter Frontmatter { get; } = new(
        "benefits-enrollment",
        "Enroll an employee in health, dental, or vision plans.");

    [AgentSkillResource("available-plans")]
    public string AvailablePlans => "...список планов...";

    [AgentSkillScript("enroll")]
    private static string Enroll(string employeeId, string planCode) { ... }
}
3️⃣ Инлайн-скилл Нужный навык ещё не вышел, а ждать нельзя. Пишем прямо в коде через AgentInlineSkill:
var timeOffSkill = new AgentInlineSkill(
    name: "time-off-balance",
    description: "Calculate remaining vacation and sick days.",
    instructions: "...")
    .AddScript("calculate-balance", (string employeeId, string leaveType) =>
    {
        int remaining = HrDatabase.GetAnnualAllowance(employeeId, leaveType)
                      - HrDatabase.GetDaysUsed(employeeId, leaveType);
        return JsonSerializer.Serialize(new { employeeId, leaveType, remaining });
    });
Когда NuGet-пакет выйдет, то просто убираем строку из билдера. Агент ничего не заметит. Собираем всё вместе AgentSkillsProviderBuilder объединяет все три типа:
var skillsProvider = new AgentSkillsProviderBuilder()
    .UseFileSkill(Path.Combine(AppContext.BaseDirectory, "skills"))
    .UseSkill(new BenefitsEnrollmentSkill())
    .UseSkill(timeOffSkill)
    .UseFileScriptRunner(SubprocessScriptRunner.RunAsync)
    .UseScriptApproval(true) // подтверждение перед запуском скриптов
    .Build();
UseScriptApproval(true) добавляет человека в цикл: агент приостанавливается перед каждым запуском скрипта и ждёт одобрения. Полезно там, где скрипты имеют реальные последствия — записывают данные, обращаются к продакшн-инфраструктуре. Подход удобен тем, что каждый шаг независим. Не нужно согласовывать форматы между командами или держать всё в одном репозитории. Файловые скиллы хорошо подходят для контента, который часто меняется. Классовые — для переиспользуемой логики, которую удобно поставлять как пакет. Инлайновые — для временных заглушек и случаев, когда скилл нужно генерировать динамически из данных. ➡️ Источник | Документация | Примеры на GitHub 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

🔐 Защита от CSRF-атак в NET Cross-Site Request Forgery (CSRF) это атака, при которой злоумышленник заставляет браузер пользо
🔐 Защита от CSRF-атак в NET Cross-Site Request Forgery (CSRF) это атака, при которой злоумышленник заставляет браузер пользователя отправить нежелательный запрос от его имени. Пользователь залогинился в банковском приложении. Он заходит на вредоносный сайт, где спрятана форма, которая автоматически отправляет POST-запрос на /transfer?amount=10000&to=hacker. Браузер добросовестно прикладывает куки сессии. Сервер видит валидный запрос. Деньги ушли. Как включить защиту: 1. Регистрация сервиса:
builder.Services.AddAntiforgery();
2. Защита конкретного эндпоинта:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Submit(FormModel model)
{
    // обработка только "своих" запросов
}
3. Глобальная защита через фильтр:
builder.Services.AddControllersWithViews(options =>
{
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
});
Minimal API — вручную:
app.MapPost("/submit", ([FromForm] IFormCollection form,
    IAntiforgery antiforgery, HttpContext ctx) =>
{
    antiforgery.ValidateRequestAsync(ctx);
    // ...
});
CSRF-защита критична для любых форм, меняющих состояние: оплата, смена пароля, удаление данных. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #sharp_view

👨‍💻 Убираем лишнее из контекстного меню без хирургии Контекстное меню Windows 11 по умолчанию набито пунктами, которые боль
👨‍💻 Убираем лишнее из контекстного меню без хирургии Контекстное меню Windows 11 по умолчанию набито пунктами, которые большинству людей не нужны никогда. «Открыть в терминале», «Показать дополнительные параметры», «Дать доступ», «Закрепить на начальном экране». Cписок разрастается с каждым обновлением, и убрать ненужное штатными средствами нельзя. Windows 11 Context Menu Manager это простой инструмент, который позволяет отключить ненужные пункты нового контекстного меню Explorer в Windows 11. Ничего лишнего: запускаете приложение, снимаете галочки с того, что мешает, закрываете. Изменения применяются сразу. Где взять: в GitHub репозитории 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news

🤯 Представьте, что ваш AI-агент работает так же предсказуемо, как обычный микросервис. Звучит утопически, но это именно то, к чему должна прийти разработка в 2026 году. Основная боль текущих реализаций — полная непредсказуемость поведения. Сегодня агент выполнил задачу за два шага, а завтра ушёл в рекурсию и потратил все лимиты. Наш обновлённый курс «Разработка AI-агентов» научит, как приручить этот хаос с помощью Python и современных фреймворков. Мы не будем учить «общаться» с нейросетью, мы будем строить из неё надёжный инструмент. ✅ Что вы получите: — понимание того, как управлять логикой агента на уровне кода; — навыки работы с LangChain и библиотеками оркестрации; — готовые паттерны для обработки ошибок и галлюцинаций; — опыт создания систем, которые реально экономят время. Есть пара мест со скидкой до завтра, решайтесь 👈🏻

🤔 Разрабатываете ИИ-агентов, но всё ещё не уверены в их стабильности и прогнозируемости? Мы поговорили с десятками разработчиков ИИ-агентов и сделали отдельный курс по AgentOps. 🧠 На нём вы узнаете: – как оптимизировать траты на токены; – как на практике оценить качество работы агента; – как «докручивать» RAG-системы без потери качества; – как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы и про многое-многое другое. 📅 Старт: 19 мая. 👥 Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Huawei, МТС и др. Длительность: 6-12 недель в зависимости от тарифа. 🔗 Программа курса и другие подробности

🛠 fixed и pinning в небезопасном коде Когда вы работаете с неуправляемым кодом, сборщик мусора превращается в непредсказуемую переменную. Он может переместить объект в памяти в любой момент, а ваш указатель при этом будет ссылаться уже на пустое место. Именно для этого существует fixed. Сборщик мусора не просто удаляет объекты, он их перемещает. Это часть компактизации кучи. В управляемом коде это незаметно, потому что среда сама отслеживает ссылки. Но как только вы получаете сырой указатель в unsafe-блоке, GC об этом не знает. Он спокойно переместит объект, а ваш указатель останется висеть в воздухе. Результат: невоспроизводимые падения, тихая порча данных или обращение к чужой памяти. Как работает fixed Оператор fixed говорит сборщику: «не трогай этот объект, пока я с ним работаю». Объект временно закрепляется в памяти, и указатель остаётся валидным на протяжении всего блока:
unsafe
{
    fixed (int* ptr = &array[0])
    {
        // ptr гарантированно указывает туда, куда нужно
        for (int i = 0; i < array.Length; i++)
        {
            *(ptr + i) *= 2;
        }
    }
    // После выхода из блока GC снова может перемещать объект
}
Всё, что происходит внутри блока fixed, защищено. Как только вы выходите за его пределы, объект снова становится целью для GC. Когда это нужно 1. interop с нативными библиотеками. Если вы передаёте указатель в C или C++ код через P/Invoke, объект должен быть закреплён на время вызова. Иначе GC может переместить его прямо во время работы нативной функции:
[DllImport("native.dll")]
static extern void ProcessBuffer(int* buffer, int length);

unsafe
{
    fixed (int* ptr = data)
    {
        ProcessBuffer(ptr, data.Length);
    }
}
2. Высокопроизводительная обработка данных. Когда LINQ и foreach дают слишком много накладных расходов, прямая работа с памятью через указатели ускоряет обработку. Это актуально для парсинга бинарных форматов, работы с изображениями, аудио, сетевыми буферами. 3. Небезопасные операции cо Span<T>. Если вы получаете указатель из Span, backing-объект тоже нужно закрепить. Практическое правило простое: блок fixed должен содержать только тот код, которому реально нужен указатель. Никакой лишней логики внутри. 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #il_люминатор

❓ Почему приватный виртуальный метод нельзя переопределить Кажется, что virtual и private должны просто работать вместе. Один
Почему приватный виртуальный метод нельзя переопределить Кажется, что virtual и private должны просто работать вместе. Один говорит «этот метод можно переопределить», другой говорит «этот метод виден только внутри класса». Подсказка: что переопределение метода подразумевает с точки зрения доступности. Ответ: в нашем канале по подготовке к собесу 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #dotnet_challenge

🤩 Конец эпохи Python-интеропа для .NET-разработчиков Microsoft объявила о выходе Agent Framework 1.0 для .NET и Python. Agen
🤩 Конец эпохи Python-интеропа для .NET-разработчиков Microsoft объявила о выходе Agent Framework 1.0 для .NET и Python. Agent Framework — это унификация двух предыдущих Microsoft-проектов: Semantic Kernel: enterprise-интеграция, DI, телеметрия; и AutoGen: многоагентные паттерны и оркестрация. Один пакет вместо двух, одна модель программирования. До Agent Framework 1.0 большинство инструментов для AI-агентов были Python-first. .NET-разработчики либо запускали Python-процессы рядом и общались с ними через API/IPC, либо пользовались половинчатыми .NET-обёртками над Python-библиотеками. Что стабилизировано в 1.0 В стабильную версию вошли: базовая абстракция агента, сервисные коннекторы для .NET, middleware-хуки, провайдеры памяти и контекста, граф-based workflow и паттерны многоагентной оркестрации: sequential, concurrent, handoff, group chat и Magentic-One. Вместе с 1.0 вышел DevUI: браузерный локальный дебаггер для визуализации выполнения агента, потоков сообщений, вызовов инструментов и решений оркестратора в реальном времени. AutoGen продолжит получать только баг-фиксы и критические патчи безопасности. Semantic Kernel остаётся активным, но для новых проектов с агентами Microsoft теперь рекомендует Agent Framework. ➡️ Источник 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news

🤖 .NET миграции теперь с ИИ-анализом Microsoft представила Modernization Assessment: инструмент для анализа кода на готовнос
🤖 .NET миграции теперь с ИИ-анализом Microsoft представила Modernization Assessment: инструмент для анализа кода на готовность к облаку. Он создает точный план миграции для .NET проектов. Как работает оценка Загрузите репозиторий в GitHub Copilot. ИИ сканирует зависимости, архитектуру и легаси-код. Выдает роадмапу с задачами и рисками миграции в Azure. ➡️ Блог разработчиков | Репозиторий 📍 Навигация: ВакансииЗадачиСобесы 🐸 Библиотека шарписта #async_news