.NET Compact Framework 3.5: установка и решение ошибок

Приложение на терминале сбора данных или старом КПК выдаёт сообщение об ошибке загрузки сборки — чаще всего причина кроется в отсутствующем или повреждённом .NET Compact Framework 3.5, рантайме, без которого управляемый код на Windows Mobile и Windows CE просто не запускается. Это урезанная версия настольного .NET Framework, созданная Microsoft специально для устройств с ограниченной памятью и процессорами ARM, и она до сих пор критична для складских терминалов, промышленных контроллеров и встраиваемых систем.

Несмотря на возраст платформы, парк устройств на Windows Mobile 6.x и Windows Embedded CE остаётся значительным: оборудование служит десятилетиями, а переписывать ПО дорого. В этом материале разберём, что представляет собой Compact Framework 3.5, чем он отличается от полной версии, как его установить и что делать при типичных сбоях.

Что такое .NET Compact Framework 3.5

.NET Compact Framework (сокращённо .NET CF) — это подмножество классического .NET Framework, адаптированное под ограничения мобильных и встраиваемых устройств. Версия 3.5 стала последним крупным выпуском линейки и привнесла поддержку LINQ, улучшенный Windows Communication Foundation (подмножество для обмена сообщениями) и расширенные возможности работы со звуком.

Рантайм включает компактную реализацию CLR, базовые библиотеки классов и подмножество Windows Forms для построения интерфейсов. Приложения под него разрабатываются в Visual Studio 2008 — более поздние версии IDE официально не поддерживают таргетинг на Compact Framework.

Важно понимать: сборки, скомпилированные под полный .NET Framework, на Compact Framework не запустятся, и наоборот. Это разные рантаймы с разным набором API, несмотря на общий синтаксис C# или VB.NET.

Где используется платформа

Типичные сценарии применения Compact Framework 3.5 связаны с корпоративным и промышленным оборудованием, а не с потребительскими устройствами.

  • 📦 Терминалы сбора данных (ТСД) на складах — сканирование штрихкодов, инвентаризация, приёмка товара
  • 🏭 Промышленные контроллеры и HMI-панели на базе Windows CE / Embedded Compact
  • 🚚 Бортовые терминалы в логистике и транспортной телематике
  • 💳 Устаревшие POS-терминалы и платёжное оборудование
  • 📟 КПК и полевые устройства для мобильных сотрудников

Если вы обслуживаете подобный парк техники, знание особенностей рантайма экономит часы диагностики: значительная часть «непонятных» сбоев ПО на таких устройствах сводится к проблемам с версией .NET CF.

Системные требования и совместимость

Compact Framework 3.5 работает на устройствах с операционными системами Windows CE 5.0 и новее, Windows Mobile 5.0/6.x и Windows Embedded Compact. На настольных версиях Windows он не нужен — там используется полный .NET Framework, это частый источник путаницы.

Версия 3.5 поддерживает приложения, собранные под .NET CF 2.0, благодаря обратной совместимости: рантайм 3.5 включает соответствующие сборки. Однако приложение, скомпилированное строго под 3.5, на устройстве с одним только CF 2.0 работать не будет.

Параметр.NET CF 2.0.NET CF 3.5
LINQ и лямбда-выраженияНетДа
Подмножество WCFНетДа
Среда разработкиVisual Studio 2005/2008Visual Studio 2008
Запуск приложений CF 2.0НативноЧерез совместимость
Целевые ОСWindows CE 4.2+, WM 5.0+Windows CE 5.0+, WM 5.0+
⚠️ Внимание: конкретный набор предустановленных компонентов зависит от производителя устройства и сборки ОС. На некоторых терминалах .NET CF уже вшит в прошивку, на других его нужно устанавливать отдельно — сверяйтесь с документацией вендора конкретной модели.

Как установить .NET Compact Framework 3.5

Установка выполняется через CAB-файл, который копируется на устройство и запускается встроенным установщиком. Дистрибутив NETCFv35.cab (и локализованные ресурсы) распространялся в составе SDK и через центр загрузки Microsoft; при отсутствии доступа к официальному источнику используйте копию, поставляемую разработчиком вашего прикладного ПО.

Общий порядок действий такой:

☑️ Установка .NET CF 3.5 на устройство

Выполнено: 0 / 6

На устройствах, где рантайм включён в образ прошивки, отдельная установка не требуется и может даже конфликтовать с встроенной версией. Проверить наличие рантайма можно через системный апплет удаления программ или по наличию сборок в каталоге \Windows.

Типичные ошибки и их решение

Самая частая жалоба — сообщение вида «не удаётся загрузить сборку» или требование установить более новую версию .NET CF при запуске программы. Разберём основные сценарии.

Ошибка загрузки сборки при старте приложения. Обычно означает, что приложение собрано под версию, которой нет на устройстве. Проверьте установленную версию рантайма (утилита cgacutil.exe из SDK показывает список сборок в GAC) и доустановите нужный CAB.

Приложение работало, но после холодной перезагрузки пропало. На части устройств данные в оперативной памяти не переживают полный сброс питания. Решение — хранить CAB на карте памяти или в постоянном разделе и автоматизировать переустановку скриптом запуска, если это предусмотрено платформой устройства.

Ошибка «Out of Memory» при работе. Compact Framework работает в условиях жёсткого лимита памяти. Помогает закрытие фоновых приложений, уменьшение объёма обрабатываемых данных за одну операцию и, на уровне разработки, своевременное освобождение ресурсов через Dispose().

📊 С какой проблемой .NET CF 3.5 вы столкнулись
Ошибка загрузки сборки при запуске
Рантайм пропадает после перезагрузки
Нехватка памяти устройства
Конфликт версий CF 2.0 и 3.5
⚠️ Внимание: не пытайтесь «починить» рантайм копированием случайных DLL из настольного .NET Framework — сборки несовместимы, и такие действия могут вывести из строя всю управляемую среду устройства.

Особенности разработки под Compact Framework

Если вам нужно не просто установить рантайм, а поддерживать или дорабатывать приложение, учитывайте ограничения платформы. Отсутствует значительная часть API полного фреймворка: урезаны рефлексия, сериализация, работа с реестром и графикой. Многие привычные классы либо недоступны, либо имеют сокращённый набор методов.

Отладка ведётся через подключение устройства к ПК с Visual Studio 2008 и ActiveSync (или Windows Mobile Device Center на Vista и новее). Эмуляторы в составе SDK позволяют проверять код без физического устройства, но поведение на реальном железе — особенно по памяти и периферии — может отличаться.

Почему нельзя использовать Visual Studio новее 2008

Поддержка проектов Smart Device и таргетинга на .NET Compact Framework была исключена из Visual Studio начиная с версии 2010. Microsoft перевела мобильную разработку на Windows Phone с другой моделью приложений. Поэтому для legacy-проектов под CF 3.5 сохраняют виртуальную машину с Windows XP/7 и Visual Studio 2008 SP1 — это стандартная практика сопровождения старых решений.

При модернизации проекта имеет смысл оценить миграцию на современные платформы (например, переписывание логики под Android-терминалы), так как компоненты экосистемы CF постепенно исчезают из обращения, а найти специалистов и рабочее железо становится сложнее.

Альтернативы и перспективы платформы

Официальная поддержка Windows Mobile и связанных технологий завершена, обновлений безопасности не выпускается. Для новых проектов Compact Framework применять не следует — это платформа исключительно для сопровождения существующего оборудования и ПО.

Возможные пути развития для организаций:

  • 🔄 Миграция на Android-терминалы — современные ТСД преимущественно на этой ОС
  • 🖥️ Перенос логики на сервер — тонкий клиент вместо «тяжёлого» приложения на устройстве
  • 🧊 Консервация парка — документирование конфигурации, резервные копии CAB-файлов и прошивок
⚠️ Внимание: устройства без обновлений безопасности не стоит подключать напрямую к интернету. Изолируйте их в отдельном сегменте сети и ограничьте доступ критичными для работы сервисами.

Часто задаваемые вопросы

Можно ли установить .NET Compact Framework 3.5 на Windows 10/11?

Нет. Compact Framework предназначен только для Windows CE и Windows Mobile. На настольных системах используется полный .NET Framework или современный .NET — это разные продукты.

Приложение требует .NET CF 3.5, а на устройстве стоит 2.0. Что делать?

Установите CAB-файл версии 3.5 — он может сосуществовать с 2.0. Если приложение собрано строго под 3.5, без установки нужного рантайма оно не запустится.

Где взять дистрибутив NETCFv35.cab?

Изначально он распространялся через центр загрузки Microsoft и в составе SDK для Windows Mobile. Если официальный источник недоступен, запросите установщик у разработчика вашего прикладного ПО или поставщика терминалов — у них обычно есть проверенная копия.

Почему после холодной перезагрузки терминала рантайм исчезает?

На ряде устройств установленные в оперативную память программы не сохраняются при полном обесточивании. Храните CAB на карте памяти или в энергонезависимом разделе и настройте автоматическую переустановку, если платформа устройства это позволяет. Точное поведение уточняйте в документации производителя модели.

Стоит ли разрабатывать новое приложение под .NET CF 3.5?

Нет. Платформа не поддерживается, инструментарий устарел, а парк совместимых устройств сокращается. Для новых решений выбирайте актуальные платформы — например, Android для терминалов сбора данных.