- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 567
- Реакции
- 15
KMBox Net — штука в хозяйстве полезная, но когда дело доходит до интеграции либы в старые проекты на .NET Framework 4.8, начинается настоящий ад с зависимостями. Основная проблема в том, что свежие сурсы KMBox.NET обычно скомпилены под .NET 7.0, и обратной совместимости там практически нет.
Пытаюсь прикрутить управление девайсом в старый билд на C#, и ловлю целый букет ошибок. Рантайм ругается, методы не находятся, проект просто отказывается собираться.
Что уже пробовал костылить:
Несмотря на все правки в коде, конфликт версий System.Runtime остается непобежденным и блокирует компиляцию. Видимо, KMBox.NET использует слишком много «сахара» из седьмой версии, который в 4.8 завезти забыли.
Кто плотно работает с железками через C#, как решали вопрос с легаси-базами? Есть ли адекватный способ заставить проект схавать эту зависимость без полного реврайта всей логики взаимодействия под старый фреймворк?
Интересно услышать мнение тех, кто реально прокидывал управление KMBox в свои старые наработки.
Пытаюсь прикрутить управление девайсом в старый билд на C#, и ловлю целый букет ошибок. Рантайм ругается, методы не находятся, проект просто отказывается собираться.
- Конфликт System.Runtime (Ошибка CS1705): Библиотека KMBox требует версию рантайма 7.0.0.0, а в проекте 4.8 висит древняя 4.1.2.0. Обычный bindingRedirect в app.config здесь не спасает — рантайм его игнорирует.
- UdpClient и асинхронность: В .NET 7 методы SendAsync и ReceiveAsync имеют другие перегрузки. Старый фреймворк хочет явного указания длины буфера, а либа пытается слать один аргумент.
- BitConverter и startIndex: Методы типа ToUInt32 внезапно требуют аргумент startIndex, который в более новых версиях рантайма реализован иначе.
- Отсутствие API: RandomNumberGenerator.GetInt32() и GetValueOrDefault для ImmutableDictionary в старом 4.8 просто не существуют.
Что уже пробовал костылить:
- Руками менял вызовы RandomNumberGenerator на стандартный Random().Next().
- Адаптировал вызовы UDP под старые сигнатуры (добавлял .Length).
- Подтягивал System.Collections.Immutable через NuGet, чтобы оживить словари.
- Пытался пересобрать либу под .NET Standard 2.0 и чистый 4.8 — вылетает гора ошибок из-за отсутствующих системных API в ядре.
Несмотря на все правки в коде, конфликт версий System.Runtime остается непобежденным и блокирует компиляцию. Видимо, KMBox.NET использует слишком много «сахара» из седьмой версии, который в 4.8 завезти забыли.
Кто плотно работает с железками через C#, как решали вопрос с легаси-базами? Есть ли адекватный способ заставить проект схавать эту зависимость без полного реврайта всей логики взаимодействия под старый фреймворк?
Интересно услышать мнение тех, кто реально прокидывал управление KMBox в свои старые наработки.