Отладка приложения.NET Compact Framework локально (без эмулятора или устройства)

В настоящее время я нахожусь на этапе подготовки нового проекта, который будет разработан с использованием.NET Compact Framework (2.0 или 3.5, мы увидим) и будет работать на специальном оборудовании Windows CE 6. Однако есть одна вещь, которую я не могу заставить работать:

Отладка кажется возможной только с физического устройства или с эмулятором. Но когда я просто запускаю приложение из проводника, оно счастливо работает на моем рабочем столе (потому что, конечно, CF установлен на моей машине для разработки. Итак, актуальный вопрос:

Как я могу отладить мое приложение.NET CF на настольном компьютере, если оно работает на платформе CF рабочего стола? Или это невозможно? Если последнее, как я должен это сделать? Создать проект без CF для отладки? Я знаю, что я должен отлаживать на устройстве, и это важно для серверной части приложения, но графический интерфейс может быть отлажен на рабочем столе. Поскольку он использует OpenGL, он работает намного быстрее, чем в эмуляторе (устройство имеет ускорение OpenGL).

4 ответа

Следуйте этому руководству Дэниела Мота, чтобы настроить цель развертывания "Мой компьютер":

"Мотылек: разверните на моем компьютере"

Затем выберите это как цель развертывания для вашего проекта Smart Device Project и нажмите F5. Старайтесь держаться подальше от любых платформенно-специфических модулей / методов и т. Д.

Есть много отличных записей в блоге г-на Мота, если вы являетесь разработчиком Compact Framework.

Обычно я создаю 2 проекта, один для рабочего стола и один для CF. Версия для настольного компьютера - это исполняемый файл для настольного компьютера, который просто ссылается на CF .dll (это нормально). Очевидно, вам нужно поместить ваше основное приложение в библиотеки и сделать ваш.exe просто очень легкой оболочкой (но в любом случае это довольно хороший дизайн)

На самом деле он работает не на CF, а на FF, поэтому есть несколько проблем совместимости, которые вы можете заметить в разнице реализаций.

Другой вариант - использовать параметр отладки в Visual Studio для "присоединения к процессу". Таким образом, вы можете запустить приложение, дважды щелкнув, а затем просто присоединиться к этому процессу.

Я знаю, что вы имеете в виду относительно низкой производительности эмулятора при отладке приложений CF.

К сожалению, я не думаю, что это возможно из коробки. Если вы заметили, отладчик в VS всегда проверяет, какое у вас подключенное устройство, чтобы решить, следует ли развертывать ваше приложение или нет, в зависимости от того, есть ли у вас какие-либо изменения с момента последнего развертывания.

Если кто-то хочет отладить что-то, кроме эмулятора или устройства, он должен попытаться добавить в этот список другой "эмулятор", который, возможно, не типичный эмулятор, а сам рабочий стол. К сожалению, я не думаю, что это возможно.

Конечно, я готов быть исправленным кем-то более опытным в развитии CF. Мне было бы очень интересно, если бы существовала такая техника отладки CF-приложений!

Подготовить устройство к подключению

  1. Используя любое имеющееся у вас соединение с устройством, скопируйте следующие файлы в папку \Windows\ на устройстве. Эти файлы по умолчанию находятся на компьютере разработчика в папке \Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\wce400\. Clientshutdown.exe ConmanClient2.exe CMaccept.exe eDbgTL.dll TcpConnectionA.dll
  2. Из командной строки на устройстве запустите conmanclient2.exe.
  3. Определите IP-адрес устройства.

Подготовить Visual Studio для подключения

  1. В меню Инструменты Visual Studio выберите Параметры, затем нажмите Инструменты устройства, а затем нажмите Устройства.
  2. Выберите устройство Windows CE и нажмите "Свойства".
  3. Справа от поля "Транспорт" нажмите "Настроить".
  4. В диалоговом окне "Настройка транспорта TCP/IP" выберите "Использовать определенный IP-адрес", а затем введите IP-адрес устройства.

Чтобы установить безопасность и установить соединение 1. В командной строке на устройстве запустите cMaccept.exe.

Другие вопросы по тегам