Visual Studio 2013 & Windows 8.1 Tip: Crear un proyecto Windows Store para Windows 8.0

Hola a todos!

WorksOnMyMachine_3

 

Como buen early adopter, desde el mismo día 26 de junio tengo instalada la preview de Visual Studio 2013 y Windows 8.1 en mi Surface Pro. Haciendo pruebas, he visto que, aunque Visual Studio 2013 permite trabajar con proyectos Windows Store de Windows 8, no permite crearlos. Si creamos un nuevo proyecto Windows Store siempre se creará para Windows 8.1 y no tendremos forma “oficial” de cambiar la versión a Windows 8.0. Pero como no me puedo estar quieto y quiero usar Visual Studio 2013 para crear los ejemplos de este blog, he estado buceando en las profundidades de los archivos csproj y appxmanifest para ver que cambios serían necesarios para cambiar un proyecto de Windows 8.1 a Windows 8.0. Aquí tenéis los resultados.

Cambios en el archivo csproj

Para empezar, vamos a cambiar la plataforma a la que apunta nuestro proyecto. Para ello, hacemos click derecho sobre el proyecto en el Solution Explorer y seleccionamos la opción “Unload Project” a continuación  volvemos a hacer click derecho y seleccionamos la opción “Edit XXX.csproj” donde XXX será el nombre de nuestro proyecto. Esto abrirá el archivo csproj en modo texto para dejarnos editar el XML que contiene. En el primer PropertyGroup, debemos buscar dos nodos: TargetPlatformVersion y MinimumVisualStudioVersion. Los valores originales de estas propiedades serán respectivamente: 8.1 y 12.0. Solo tendremos que cambiarlos por 8.0 y 11.0.

Además tendremos que modificar El nodo Project que se encuentra al principio del archivo. En este nodo debemos cambiar el valor del atributo ToolsVersion de 12.0 a 11.0. Por último necesitamos ir al final del archivo y buscar un PropertyGroup que contenga el elemento VisualStudioVersion, establecido a 12.0 y cambiarlo por 11.0, debería quedar de la siguiente forma:

VisualStudioVersion
  1. <PropertyGroup Condition=” ‘$(VisualStudioVersion)’ == ” or ‘$(VisualStudioVersion)’ &lt; ‘11.0’ “>
  2.   <VisualStudioVersion>11.0</VisualStudioVersion>
  3. </PropertyGroup>

Guardar y recargar el proyecto haciendo click derecho sobre él en el Solution explorer y seleccionando la opción “Reload Project”.

Esto debería permitirnos ejecutar la aplicación en Windows 8.0 y cargar el proyecto en Visual Studio 2012. Pero si intentamos compilar el proyecto obtendremos varios errores en el archivo appxmanifest, indicándonos que no reconoce ciertos nodos y atributos…

Cambios en el archivo appxmanifest

Como decía anteriormente, al intentar compilar el proyecto obtendremos un error: “App manifest validation failed. File contains unrecognized XML elements”, indicando exactamente el nodo: /Package/Applications/Application/m2:VisualElement. Si hacemos doble click sobre el error, se abrirá el archivo Package.appxmanifest directamente en modo XML:

Visual Elements en Windows 8.1
  1. <m2:VisualElements
  2.     DisplayName=”Win81ToWin80
  3.     Square150x150Logo=”AssetsLogo.png
  4.     Square30x30Logo=”AssetsSmallLogo.png
  5.     Description=”Win81ToWin80
  6.     ForegroundText=”light
  7.     BackgroundColor=”#464646“>
  8.     <m2:SplashScreen Image=”AssetsSplashScreen.png” />
  9. </m2:VisualElements>

El primer cambio que debemos hacer, es deshacernos del texto m2: tanto en la apertura y cierre del nodo VisualElements como SplashScreen. A continuación tendremos que cambiar el atributo Square150x150Logo por Logo y Square30x30Logo por SmallLogo. Nuestro Nodo VisualElements debería quedar de la siguiente forma:

Visual Elements en Windows 8.0
  1. <VisualElements
  2.     DisplayName=”Win81ToWin80
  3.     Logo=”AssetsLogo.png
  4.     SmallLogo=”AssetsSmallLogo.png
  5.     Description=”Win81ToWin80
  6.     ForegroundText=”light
  7.     BackgroundColor=”#464646“>
  8.     <SplashScreen Image=”AssetsSplashScreen.png” />
  9. </VisualElements>

Ahora tenemos que subir un poco más arriba en el archivo Package.appxmanifest hasta encontrar el nodo Prerequisites:

Prerequisites en Windows 8.1
  1. <Prerequisites>
  2.   <OSMinVersion>6.3.0</OSMinVersion>
  3.   <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  4. </Prerequisites>

Tendremos que modificar el elemento OSMinVersion para que permita la ejecución en Windows 8 (Versión 6.2). Podemos dejar el nodo OSMaxVersionTested a 6.3, indicando que la app se puede ejecutar en Windows 8.1:

Prerequisites en Windows 8.0
  1. <Prerequisites>
  2.   <OSMinVersion>6.2.0</OSMinVersion>
  3.   <OSMaxVersionTested>6.3.0</OSMaxVersionTested>
  4. </Prerequisites>

Si ahora realizamos un rebuild de nuestro proyecto, funcionará correctamente. Incluso podemos abrirlo en Visual Studio 2012 en Windows 8.0 y ejecutarlo como si fuese una aplicación normal y corriente Windows Store para Windows 8.0.

A continuación tenéis un proyecto convertido de esta forma, que se puede abrir en Visual Studio 2012 sobre Windows 8.0 y funciona a la perfección:

Y recordad “Works on my machine”. Un saludo y Happy Coding!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *