fundo
Do ponto de vista de um desenvolvedor, o principal ponto de venda do Windows 10 é sua nova Plataforma Universal * Windows (UWP) .
* Onde "Universal" realmente significa "universal para todos os dispositivos que executam o Windows 10", e não "universal para dispositivos que executam não apenas o Windows 10, mas também o Windows 8.1 e talvez o Windows 7". Portanto, se você está criando um aplicativo UWP, está realmente apenas criando um "aplicativo Windows 10". Os aplicativos UWP não serão executados mesmo nos dispositivos Windows 8.1 e Windows Phone 8.1, ou seja, não são compatíveis com versões anteriores.
A partir do terceiro trimestre de 2015, o Windows 10 estava disponível para PCs e dispositivos IoT . Levará pelo menos mais alguns meses até que o Windows 10 Mobile seja lançado ao público, mas provavelmente não mais que um ano. Isso significa que o Windows Phone 8.1 permanecerá por um tempo ainda.
Questão
Estou prestes a começar a desenvolver um aplicativo para Windows Phone e pretendo publicá-lo no próximo mês ou mais, pois é um aplicativo bastante simples. Como o Windows 10 Mobile não chegará tão cedo, e muito menos os dispositivos em todo o mundo sendo atualizados, tenho que segmentar o Windows Phone 8.1 por enquanto. No entanto, uma vez que não será que muito antes do Windows 10 rolos móveis fora, eu estou querendo saber se seria sábio para preparar a minha solução para implantação em Windows 10 UWP , bem como Windows Phone 8.1 (que também me permite continue apoiando o 8.1 pelo tempo que eu precisar).
Vejo que posso agrupar um projeto UWP e um projeto 8.1 na mesma solução e compartilhar arquivos e ativos de origem por meio de um projeto compartilhado, como feito com o modelo Universal do Windows 8.1 no Visual Studio. Estou no caminho certo? Em caso afirmativo, existem diretrizes adicionais que devo seguir para garantir que tudo (incluindo XAML, como idealmente eu gostaria de ter a mesma ou pelo menos similar interface do usuário nas duas plataformas) realmente funcione corretamente nas duas plataformas, respondendo a incongruências?
Como alternativa, eu não podia me preocupar com o Windows 10 Mobile por enquanto e começar com um projeto 8.1 e migrá-lo para a UWP mais tarde, mas ainda precisaria manter as duas versões do meu aplicativo, pois não planejo abandonar o 8.1 usuários imediatamente. Eu ainda teria que me preocupar com a paridade de recurso / XAML nesse caso.
Respostas:
Como você diz em um de seus comentários, a melhor maneira de fazer isso é usar um projeto compartilhado e incluir várias cabeças nele. No seu caso, um windows phone 8.1 head e um uwp head. Esta posição foi também expresso em um MVA por Jerry Nixon e Andy Wigley (acho que isso é, mas ele foi atualizado desde então), na seção sobre a portagem de 8,1 aplicativos para UWP.
No seu projeto compartilhado, você pode precisar usar diretivas de compilação condicional para diferenciar o código executado no uwp e no telefone 8.1. (Como ao criar aplicativos universais do Windows 8.1 / phone 8.1)
fonte
Dependendo do recurso específico do Windows que seu aplicativo precisa, você pode usar uma plataforma como o Xamarin, que permite escrever não apenas no Windows, mas também no iOS e Android na mesma base de código.
fonte
A partir da minha experiência: vale a pena colocar alguns helpers / logic / etc nas bibliotecas PCL. Em seguida, você pode criar dois projetos (para UWP e WP8, respectivamente) que podem utilizar PCL com zero alterações. Além disso, você pode compartilhar serviços, visualizar modelos e modelos (com muito poucas #if linhas de compilação condicional).
A única coisa que NÃO vale a pena compartilhar é a equipe relacionada à interface do usuário, pois muitas coisas precisam ser trocadas / condicionadas (por isso é muito mais fácil preparar layouts separados para cada um dos UWP e WP8, mesmo que sejam praticamente os mesmos).
PS Eu fiz isso para UWP e WP8.1 Silverlight
fonte