Acelerando el desarrollo en PocketPC (VS2005)

Desarrollar cualquier aplicación en Visual Studio 2005 para PocketPC o Windows Mobile es desesperante. Primero por el propio VS2005, y sobre todo por la lentitud del emulador. Da igual que la conexión sea por DMA, TCP, o que el PC sea de lo mejor. La cuestión es que cualquier cambio implica tener que esperar no menos de 10 segundos; una eternidad.

Una posibilidad es usar el PC de escritorio como plataforma destino. Con ello estamos ejecutando el código que correrá en la PDA en el PC, con lo que se acelera pero que mucho todo. Evidentemente mucha de la parte relacionada con la interfaz de usuario no tiene sentido desarrollarla de esta forma, ya que la PDA tiene una UI muy especial que poco tiene que ver con la de escritorio. Pero todo lo que no tiene que ver con las características concretas de la PDA (gps, teléfono,…) puede ser objeto de esta mejora.

Veamos, tenemos la versión completa de .NET Framework para el escritorio, y un subconjunto suyo, .NET Compact Framework, para PocketPC. Si intentamos ejecutar una aplicación que usa las librerías de .NET Framework en una PDA, seguramente no funcionará. Sin embargo, una aplicación para .NET CF funcionará en el PC si se tiene cuidado.

El primer paso es crear un proyecto para PocketPC/Windows Mobile. VS 2005 lo reconoce como tal y no mostrará opciones propias de una aplicación para Windows. En la carpeta del proyecto crea un archivo: <nombre_proyecto>.csproj. Lo abrimos y lo copiamos en la misma carpeta con otro nombre: <nombre_proyecto>.csproj_paraLaPda

Tenemos dos archivos con igual contenido y distinto nombre. Ahora abrimos <nombre_proyecto>.csproj y eliminamos las líneas que van desde

<AssemblyName>SharpMap.Test</AssemblyName>

hasta el cierre del tag padre (</PropertyGroup>). SharpMap.Test es el nombre del proyecto.

En mi caso son estas:

<ProjectTypeGuids>{4D628B5B-2FBC-4AA6-8C16-197242AEB884};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<PlatformFamilyName>PocketPC</PlatformFamilyName>
<PlatformID>3C41C503-53EF-4c2a-8DD4-A8217CAD115E</PlatformID>
<OSVersion>4.20</OSVersion>
<DeployDirSuffix>SharpMap.Test</DeployDirSuffix>
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
<FormFactorID>
<FormFactorID>

Y también borrar estas líneas en los tags siguientes (si aparecen)


<NoStdLib>true</NoStdLib>
<NoConfig>true</NoConfig>
<ErrorReport>prompt</ErrorReport>
<FileAlignment>512</FileAlignment>
<WarningLevel>4</WarningLevel>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>

Se guarda el archivo y listos. Cuando se quiera depurar con el emulador se renombra el archivo <nombre_proyecto>.csproj_paraLaPda a <nombre_proyecto>.csproj (cuidando de no sobrescribir el otro), y de forma similar para depurar sobre el PC.

Cuando se añadan referencias externas en un proyecto hay que acordarse de añadirlas también en el otro, y si se olvida, se puede esperar que VS detecte el error durante compilación.

Otro método no tan rebuscado consiste en crear un proyecto en VS2005 para PocketPC, y otro como una aplicación Windows de escritorio. Este segundo proyecto usaría el código del primero para compilar y crear el ejecutable mediante accesos directos. Es decir, botón derecho sobre proyecto para Windows –> Add Existing Item –> Add –> Add as link

Add as Link

Esta forma, sin embargo no es tan cómoda, ya que sólo pueden añadirse accesos directos a ficheros, no a directorios; con lo que podemos encontrarnos con mar de archivos fuente sin ningún orden.

Ojo, llamadas a la librería coredll.dll mediante P/Invoke en la PocketPC no funcionarán en el escritorio, ya que esa librería sólo existe en la PDA.

Explore posts in the same categories: .NET Compact Framework, Artículos

2 Comments on “Acelerando el desarrollo en PocketPC (VS2005)”

  1. lUcHeXrB Says:

    He intentado lo que comentas pero sin éxito. Seguí todos los pasos que indicas pero no he logrado correr la aplicación, me sale un error cuando intento abrir un formulario:

    The designer could not be shown for this file because none of the classes within it can be designed.

    Saludos.

  2. clxd6o Says:

    dsfsdfs67877 test test


Comment: