Разработка Windows Mobile без постоянного повторного развертывания? (без редактирования и продолжения)

Я разрабатываю приложение для Windows Mobile 6 с помощью Visual Studio 2008. Сама разработка довольно проста, но я понимаю, насколько я полагаюсь на Edit-And-Continue в VB.NET, когда занимаюсь регулярной разработкой. Эмулятор мобильного устройства (и само устройство), похоже, не поддерживает редактирование и продолжение, а это означает, что мне нужно скомпилировать свое приложение, развернуть его в эмуляторе, запустить его и перейти к тому, с чем я работаю. (иногда занимает минуту или две), а затем пройдитесь по коду, чтобы увидеть, что происходит. Хотя я могу изменять значения переменных на лету, я не могу обновить какой-либо код - для этого мне нужно остановить выполнение, изменить код и повторить процесс.

Это приводит к очень медленному развитию (я слышу, как старожилы говорят: «Вот как все было в наши дни! Прочтите перед компиляцией!), И мне интересно, есть ли способ сделать это немного менее болезненным. m пытается разрабатывать более крупные фрагменты кода одновременно, поэтому отладка происходит только болезненными рывками, но это все еще очень неприятно, когда я вызываю неправильное свойство или присоединяюсь к неправильному событию, а затем мне приходится начинать заново после создания одного -строка смена.

Я рассматривал возможность одновременной разработки приложения Windows Forms, назвав все объекты формы одинаково, а затем поделившись внутренним кодом между ними. Таким образом, я мог компилировать, исправлять ошибки, редактировать и продолжать в приложении Winforms, а затем просто копировать код в свое мобильное приложение после его проверки. Есть идея получше?


person SqlRyan    schedule 05.02.2013    source источник


Ответы (2)


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

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

person ctacke    schedule 06.02.2013

Разверните в эмуляторе, а не на устройстве.

Однако, прежде чем распространять приложение, протестируйте его на устройстве!

Эмулятор позволит вам выполнять код, редактировать значения, работающие в памяти, и записывать изменения в код по мере продвижения.

Обратите внимание, что любые изменения, которые вы вносите в код, не будут выполняться, пока вы не остановите отладчик и не перекомпилируете, как на реальном устройстве. Однако эти изменения будут там в следующий раз, когда вы запустите свой код.

Множество точек останова.

Если у вас много потоков, точки останова будут раздражать.

person jp2code    schedule 06.02.2013
comment
Я могу сделать то же самое редактирование без применения кода во время выполнения даже на реальном оборудовании. - person ctacke; 06.02.2013
comment
@ctacke Интересно, чего мне тогда не хватает, потому что мой код заблокирован, когда подключен отладчик, даже когда он находится в эмуляторе. Хотя было бы идеально иметь возможность редактировать фактический запущенный код (поскольку jp2code предлагает вам это сделать, но я не могу), я бы согласился просто на возможность вносить изменения, которые не применяются (например, Я заметил орфографическую ошибку, или хочу добавить комментарий, или что-то еще, но я не могу внести эти изменения во время отладки). - person SqlRyan; 06.02.2013
comment
Привет, Райан, я заметил, что если я включу в свой код какие-либо запросы LINQ (т.е. foreach (var x in list.Where(a => a.Property == value)) { ... }), то мой отладчик будет жаловаться на любые правки, говоря, что мне нужно перекомпилировать. Есть ли в вашем коде какие-либо запросы LINQ? - person jp2code; 07.02.2013
comment
Нет, код точно не заблокирован. И да, любое изменение, требующее переоценки LINQ, не сработает - на этом этапе происходит принудительный перезапуск. - person ctacke; 07.02.2013
comment
@ctacke Я что-то упускаю? Я запускаю отладку, развернутую в эмуляторе, и когда я пытаюсь редактировать исходный код, я получаю сообщение Невозможно изменить этот текст в редакторе. Это только для чтения. Кажется, я не могу его изменить. - person SqlRyan; 13.02.2013