2

Там, кажется, довольно много контента для переноса приложений Windows Phone на Metro, но как насчет того, если вы начинаете с нуля, и хотите создать приложение, работающее на обеих платформах?Каков наилучший способ создания проекта/решения для Windows 8 Metro и Windows Phone?

Как я понимаю, Windows Phone dev использует VS2010 на Win7, но Metro dev требует VS2012 RC на Win8. Есть ли способ работать на обоих одновременно? Windows SDK работает нормально на VS2012 в Windows 8?

Возможно ли иметь проекты для обоих приложений (и отдельный проект для общего кода - в Portable Class Library?), В одном решении?

ответ

2

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

Согласно this and other sources, VS2012 RC не может использоваться с текущим Windows Phone SDK, который по-прежнему требует VS2010. Исключением является (как вы упомянули) Portable Class Libraries, которые, похоже, могут создавать библиотеки, совместимые с Windows Phone 7+. Однако, чтобы использовать их в реальном приложении WP7, вам нужно будет ссылаться на них в соответствующем проекте WP в VS2010. Поэтому, если PCL недостаточно для ваших нужд, и вы хотите, чтобы реальные целевые проекты с общим кодом, VS2012 один не был бы вариантом.

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

Первый добавочный номер VS2012: solution and project backward compatibility. VS-решения могут содержать проекты, даже если они не загружаются версией VS, которую вы используете, а это значит, что вы могли бы одновременно создать решение, которое будет содержать проект Metro VS2012 и проект VS2010 WP7. В любом случае проект не сможет загрузить (я предполагаю) в зависимости от того, какую версию используемых вами инструментов вы используете.

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

Как это работает, вы создаете свои файлы кода независимо от любого проекта или используя какой-то определенный проект в качестве базовой линии, а затем связываете файлы кода с другими проектами и. В этом случае вам, вероятно, понадобится проект VS2010 WPF или Silverlight 5, так как обе версии могут открывать эти проекты. Затем создайте проекты Metro и WP7 вместе с этим (без кода сначала). Затем вы используете диалог «Добавить существующий элемент» в обозревателе решений, чтобы выбрать файлы из базового проекта (но еще не нажимайте «Добавить»). Нажмите стрелку вниз рядом с кнопкой «Добавить», и у вас будет опция «Добавить как ссылку», что вам нужно.

Повторение этого процесса в обоих проектах позволит любому коду или активам, которые вы разрабатываете в одной версии, перетекать в другую. Кроме того, если вам нужно изменить или отладить исходные файлы, вы можете сделать это в любой версии VS, потому что базовый проект работает одинаково в любом из них.

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

Я фактически обменял код между WP7, Silverlight и другими проектами таким образом в VS2010, и он отлично работает там, где это необходимо.

Таким образом, вам все равно придется переключать IDE для компиляции и развертывания приложений Metro и WP-приложений, но, теоретически, я думаю, что есть сильная синергия, которую вы, по сути, вытесняете VS даже в ее нынешней форме ,

Новая информация сегодня

На телефон Summit Windows, в Сан-Франциско сегодня, Microsoft объявила о том, что Visual Studio 2012 будет иметь возможность писать приложения с таргетингом Windows 8, а также Windows Phone 7.5/8. Казалось бы, это изменит приведенную выше информацию и предоставит очевидное и простое решение. Так что у вас этого еще нет, но следите за ним в будущем.

0

Один из подходов, например, используемый at least one open source project, заключается в использовании связанных исходных файлов, совместного использования того, что можно использовать совместно, и филиала, что необходимо изменить. Это похоже на простой подход и позволит обслуживать все платформы.

Смежные вопросы