Какие места на портативном устройстве используются установленными.exes для их зависимых файлов?
У меня возникла странная ситуация: старый.exe проекта, над которым я работаю, работает на портативном устройстве. Новые версии этого не делают (даже тот же самый код без дополнений).
Даже тот.exe, который работает на одном портативном устройстве, не работает на другом. Смотрите это для некоторых кровавых деталей.
Исходя из этого, я думал, что смогу отследить проблему.
Но эта утилита для ПК сообщает мне, чего не хватает в этой (ПК / сборочной машине) среде. Мне нужно знать, что отсутствует / неправильно на устройстве CE.
Итак, чтобы "подделать" эту среду на моем ПК, какие файлы с карманного компьютера мне нужно скопировать на ПК? IOW, в каких каталогах.exe на устройстве CE будет искать необходимые компоненты?
ОБНОВИТЬ
Не удивительно, что CF Whisperer (ctacke) прав. Вот что я вижу в файлах.csproj:
Утилита, которая работает на более новом устройстве /3190:
<NativePlatformName>Windows CE</NativePlatformName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
Устаревшее приложение, которое не работает на более новом устройстве /3190:
<PlatformFamilyName>WindowsCE</PlatformFamilyName>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
Поскольку я ходил взад и вперед между новыми и старыми версиями источника, перебирая, щелкая и рыча, как медвежонок, чьи детки были загнаны в угол кугуаром, и, наконец, получил его на самом деле COMPILE и BUILD снова, я не хочу обновить проект до 3.5; Я оставлю это на 2.0 и вместо этого "понизлю" устройство.
Итак: как я могу "понизить" портативное устройство до более старой версии CF?
ОБНОВЛЕНИЕ 2
Так что теперь все (вроде) имеет смысл:
В одном портативном устройстве (3190) установлен CF 3.5; таким образом, утилита, созданная для CE 3.5, работает на нем, в то время как приложение, созданное для CE 2.0, не работает.
OTOH, другое портативное устройство (Motorola/Symbol 3090) имеет установленный CF 2.0 (который Windows\cgacutil.exe сообщает как Compact Framework версии 1.0.3316.00). Приложение, созданное для CE 2.0, работает на нем, а утилита - нет.
Arghhh!!!!!!!!!!!!!!!!!
Управление версиями - это, так сказать, клык женского "убеждения"!
Почему операционные системы и подсистемы не "умнее", так что они автоматически обнаруживают такие тайны и либо автоматически устанавливают их автоматически, либо, по крайней мере, предлагают сделать это за вас одним нажатием кнопки? Ненавижу проводить дни, зажатые под шасси, с грязного масла, капающего в мои глазки.
И так, в извращенной логике (пожалуйста, сообщите мне, если я ошибаюсь), следующее имеет место:
Windows CE 2.0 == CF 1.0.3316.00
Windows CE 3.5 == CF ???? (the 3190 device does not have "cgacutil.exe", so I can't see what the version is)
А теперь: как я могу удалить более новую версию CF и заменить ее на младшую / более старую версию?
Теперь я помню, что бывший лидер этого проекта (который занимался абскуватацией) сказал, что мы не можем использовать 3.5 (проблемы с пространством / памятью), поэтому попытка обновить проект с таргетинга 2.0 до 3.5 не является вариантом.
Примечание: 3090 (Symbol) имеет версию ОС 05.00.1400 Windows CE версии 5.00 (сборка 1400)
3190 (Motorola) имеет версию 6.00.000 ОС Windows CE версии 6.00
1 ответ
У вас есть странность (и неправильность) в вашем вопросе. Время для небольшого обучения (мои>15 лет разработки приложений CE иногда окупаются).
Что касается управления версиями, Windows CE и Compact Framework абсолютно не связаны. Ну, есть некоторые вещи типа "X поддерживает Y", но в остальном они не связаны.
Windows CE 2.0 датируется 1998 или 1999 годом. На тот момент CF не существовало, это был eVB. Вы не используете CE 2.0. Я гарантирую это.
Для Compact Framework существует 4 основные версии, с некоторыми пакетами обновлений для каждой.
- CF 1.0 - выпущен в Studio 2003. Не видел много последних CE 5.0 дней, так как CF 2.0 был выпущен, когда CE 5.0 был в полевых условиях.
- CF 2.0 - выпущен в Studio 2005. Этот тип довольно распространен в старых портативных устройствах, работающих под управлением CE 5.0 и CE 6.0
- CF 3.5 - Выпущено вместе со Studio 2008. Это несколько распространено в новых аппаратных средствах. Он может быть установлен на многих старых аппаратных средствах.
- CF 3.9 - Выпущено вместе со Studio 2012. Работает только на WEC2013.
Если у вас есть устройство, которое сообщает CF 1.0, тогда оно может запускать только приложение, созданное для 1.0. Поддержка создания приложений CF 1.0 завершилась в Studio 2005. Возможно, вы сможете установить более новую версию CF (через файл CAB), если на оборудовании есть место и память.
Если у вас есть устройство, сообщающее о CF 2.0, оно может запускать приложения CF 1.0 или CF 2.0. Опять же, вы можете обновить до 3.5, если у вас есть место и память.
Если у вас есть устройство, сообщающее о CF 3.5, оно может запускать приложения CF 2.0 (и, вероятно, приложения 1.0, хотя я сомневаюсь, что пробовал это через десятилетие).
Вы не можете удалить любую версию CF в ПЗУ. Вы можете, однако, установить бок о бок. Установка более старой версии, как правило, не рекомендуется и не требуется, поскольку в более новых версиях CF будут запускаться приложения, созданные для более старых версий.
Иногда вы можете обнаружить, что устройство с CF 3.5 не может запустить приложение 2.0. Было несколько странных вещей совместимости. В этих случаях вы можете принудительно запустить CF 3.5 в режиме 2.0 (без необходимости устанавливать биты 2.0), изменив файл app.config и явно указав SupportedRuntime. Взгляните на эту страницу MSDN.