martes, 20 de mayo de 2008

Visual Studio 2008 incompatible con .NET Micro Framework

¡Cómo pasa el tiempo queridos readers (sois ya más de 30 lectores vía RSS)! Me acabo de dar cuenta que fue hace un mes cuando escribí la mejor guía de instalación de Visual Studio 2008 de la historia de la informática ;-). Desde aquella instalación no puedo decir que le esté sacando chispas a este pedazo de IDE, ya que últimamente no programo tan a machete, pero bueno, aunque sea por amor al arte siempre trasteo algo. De hecho, muchas veces son estos auto-trasteos didácticos que tanto me gustan los que me dan y generan ideas para escribir en el blog. ¡Qué le vamos a hacer! Soy auto-didacta por naturaleza ;-).

El caso es que en los últimos tiempos venía trasteando yo con todo tipo de cosillas directa o indirectamente relacionadas con el mundo embedded. Aunque he estado bastante tiempo desarrollando para Windows Mobile, últimamente me ha dado por tecnologías todavía más embebidas, como por ejemplo, .NET Micro Framework, una de las tecnologías, junto con la robótica, a las que más éxito le auguro en los próximos tiempos. Y es que a nadie se le escapa que cada vez son más los dispositivos, de todo tipo, que nos rodean, dispositivos diminutos en cuanto a tamaño y muy limitados en cuanto a recursos. Hablo por supuesto de dispositivos y placas programables, y es aquí donde entra en juego .NET Micro Framework, ya que esta nueva plataforma de Microsoft pretende facilitar la vida a los intrépidos programadores que decidan cambiar su desktop o mobile profile por el de embedded o micro embedded developer. Yo estoy en ello, así que mientras podamos y nos dejen (muy importante...), la idea es continuar "descendiendo" hacia los infiernos el mundillo embedded.

Queda claro por tanto en estos dos párrafos la conexión entre el interés que tengo en .NET Micro Framework y la reciente instalación de Visual Studio 2008. Aunque con Visual Studio 2005 ya había trasteado con micro aplicaciones, una de las pruebas de fuego que me faltaba por realizar con Visual Studio 2008 era precisamente ésa: probar a desarrollar aplicaciones para .NET Micro Framework; crear un proyecto de .NET Micro Framework y ejecutarlo aunque sea en el emulador que trae la SDK por defecto. ¡Vamos a ello!

Extrañas sensaciones me invaden cuando abro el menú que me permite elegir la plantilla de proyecto que quiero iniciar con el Visual Studio 2008. No veo el tipo de proyecto de Micro Framework por ningún lado, cuando Visual Studio 2005 bien que me lo mostraba:

"Bueeeeno, no nos pongamos nerviosos...voy a abrir un proyecto ya existente, que seguro que tutto va bene". Cojo un proyecto que tenía bajo los proyectos de mi añorado Visual Studio 2005 e intento abrirlo con el asistente de conversión de Visual Studio 2008:

¡Error al canto! "Bueeeeno, do not panic, hay veces que estos wizards mágicos de conversión tienen problemas con algún fichero en concreto...". Pues no, esta vez el wizard tiene razón ya que el proyecto ni se ha podido cargar en Visual Studio 2008. Esto me empieza a oler a chamusquina. ¡Espera! Muy astutamente se me ocurre que todo puede deberse a no haber desinstalado .NET Micro Framework 2.5 SDK antes de instalar VS2008. ¡Manos a la obra! Desinstalo super convencido .NET Micro Framework, pego un reinicio just in case, y ejecuto de nuevo la instalación de .NET Micro Framework SDK 2.5. Todo parece ir bien hasta que...¡cataclón!

El mensaje que se ve en el primer pantallazo de los dos anteriores lo dice bien clarito: Microsoft .NET Framework 2.5 requiere Visual Studio 2005 para desarrollo de aplicaciones. "Nooooooo, que lo acabo de desinstalar...". Pues bien, ésa es la gran lección de hoy: Todo aquel que esté pensando en instalar Visual Studio 2008 y quitarse de en medio Visual Studio 2005, como yo he hecho, que sepa que con Visual Studio 2008, por el momento, no es posible desarrollar para .NET Micro Framework. Como esta incompatibilidad me pareció muy extraña, lo pregunté en el newsgroup correspondiente, donde en seguida me confirmaron mis sospechas y me dijeron que estaban trabajando en ello.

Pero como soy un poco preguntón, aprovechando que hoy he asistido al evento Windows Embedded European Tour 2008 en Arrasate y he tenido la ocasión de charlar con Dave Baker, le he tirado el mismo dardo envenenado. Cordialmente (¡gran tipo!) me ha confirmado que:
  • El desarrollo de .NET Micro Framework requiere a día de hoy utilizar Visual Studio 2005 (ediciones Standard o Professional con C# instalado) .
  • La próxima salida del Service Pack 1 para Visual Studio 2008 (andan ya con versiones Beta) no va a corregir esta situación.
  • Se espera solucionar esta incompatibilidad con la salida de la próxima versión 3.0 de .NET Micro Framework, esperada más o menos para finales de este año 2008. Al loro con esto último, primicia de Dave Baker...
Ya veis las consecuencias nefastas (suena algo fúnebre) que tiene ser "el conejillo de indias tecnológico"; por querer ser el más cool y tener Visual Studio 2008, me he quedado sin poder seguir trasteando con .NET Micro Framework. Que conste que instalaré Visual Studio 2005 de nuevo para no perder de vista esta plataforma a la que le he cogido un cariño especial, y a la que le auguro un futuro prometedor en este mundo plagado de dispositivos embebidos cada vez más miniaturizados.

¡Ah! Que sepáis que tengo alguna que otra cosilla, alguna que otra issue con el Visual Studio 2008, pero esta vez con solución o hack incluído. Lo dejaré para otro día, que me da para otro post y tampoco es plan de agobiaros ahora con un post más largo que el río Amazonas ;-).

SaludoX.

No olvides suscribirte al feed RSS para enterarte de todas las actualizaciones del Txoko de Lonifasiko .


12 comentarios:

Unknown dijo...

De verdad piensas hacer un producto embebido con .NET y C#? Te deseo buena suerte, a mi me parece suicida.

Anónimo dijo...

Josu, puede (habría que probarlo) que para ciertas tareas altamente críticas no sea lo más adecuado, pero ¿por qué no utilizar .NET y C# si las tareas que voy a realizar con mi dispositivo embebido no requieren un componente altamente crítico, ni puramente real time? Encima, si me facilitan la vida con un framework para desarrollo de aplicaciones para sistemas embebidos, ya sea en C#, Java, unmanaged C++ o en ensamblador, ¿por qué no aprovecharlo? Yo desde luego soy partidario del enfoque de facilitar la vida a los programadores.

Y por cierto, creo que toda iniciativa ha de tener un "enfoque algo suicida", sobre todo al principio, ya estemos hablando de dispositivos embebidos en .NET, Real Time Linux, que de desarrollo de todo tipo de software en general. Así de dura es la vida, y como dice el refrán, "el que quiera peces, que se moje el culo...".

SaludoX.

Unknown dijo...

Estoy de acuerdo contigo que hay que utilizar la herramienta de más alto nivel posible, pero no me he encontrado nunca un sistema embebido que no tenga, a) cosas raras, hardware no estándar, un arranque especial, etc. b) Quizás no tiempo real duro, pero sí restricciones de tiempo de respuesta, y c) limitaciones importantes de espacio de código y datos.
Por otro lado, no veo la ventaja de un framework respecto a unas buenas librerías de C (aunque esto puede ser simple desconocimiento por mi parte).
Es posible simplemente que cuando decimos 'embebido' no hablemos de lo mismo.
Un saludo,... y suerte :)

Anónimo dijo...

Aupa Josu, está claro que tu concepto de embebido es sin duda mucho más "puro" que el mío, y entiendo las dudas que te genera un framework que permite programar a tan alto nivel, ya que das por hecho que esa capa adicional penaliza en tiempo y rendimiento. Inevitablemente tiene que penalizar algo, pero la idea se basa en que Visual Studio compila el código a MSIL, lo comprime (no me preguntes cómo...) y se hace deploy en la placa correspondiente, donde es interpretado, sin necesidad de que haya un sistema operativo corriendo.

Sinceramente, creo que lo mejor va a ser que algún día haga alguna prueba en real y luego comente qué tal ha ido. Pero te adelanto que las tareas que tendría pensadas realizar con este framework no serían ni mucho menos críticas.

Gracias por compartir tu experiencia, sabiduría y punto de vista en sistemas embebidos y tiempo real, "máquina" ;-).

SaludoX.

Unknown dijo...

Encantado de charlar contigo. Seguiré con atención tus aventuras.

Un saludo, y gracias a ti por este interesante blog.

Anónimo dijo...

Me alegro de que te haya parecido interesante el blog Josu. Seguiré hablando sobre .NET Micro Framework, dispositivos móviles, sistemas embebidos y sobre otras muchas cosas, así que te animo a que leas el blog y sigas compartiendo tu experiencia y conocimiento con comentarios tan buenos como éstos.

Gracias y saludoX.

Agro dijo...

Hola gente , estamos con un grupo de chicos empezando a ver algo de microFramework con el ide de desarrollo Visual Studio , mi pregunto donde se puede obtener manuales, tutoriales, ejemplos en VS de MicroFrame, Introducción a la plataforma Arquitectura MF
Trabajando con la interface de Display
Bitmaps
Shapes
Docuemntacion del manejo de recursos
Trabajando con el emuladores
Suite de Emuladores
Networking
Client ‐ Server
Documentacion del manejo de red, todo esto donde se puede conseguier?

Anónimo dijo...

Buenas, en el Windows Embedded Developer Center hay un montón de recursos en forma de whitepapers, videos, manuales, etc. Comentar también que la SDK de .NET MicroFramework incluye por defecto una serie de ejemplos con los que trastear.

Además, cada fabricante de placas que llevan .NET MicroFramework "instalado" suele incluir ejemplos, emuladores propios, etc. Entre otros se me ocurren Digi, Freescale, y otros muchos.

Por último, os recomiendo echar un vistazo al excelente blog de Pavel Bansky, quien suele publicar numerosos ejemplos con código fuente. Otro blog a tener en cuenta, el de Dave Baker, aunque últimamente no muy actualizado.No está de más tampoco enterarse de las últimas noticias en el blog oficial del equipo de .NET MicroFramework.

Ya me contaréis qué tal os va, saludoX.

Unknown dijo...

Hay unos sistemas de desarrollo y unas librerías excelentes para linux. Por supuesto, mil ejemplos, how-tos, documentación, todo ello gratis, y soportado por una comunidad interesantisima. Pero no, preferís seguir enganchados a las tecnologías microsoft, sus versiones, su lock-in, y por supuesto, el precio de sus licencias. (además de limitados a hardware x86)

Bueno, cada cual es mayorcito para saber lo que hace. Dentro de 5 años comentamos a ver qué tal nos ha ido, y cuantas unidades hemos vendido. Igual para entonces ya no hay .NET ni C#, y estáis aprendiendo otra cosa :)

Anónimo dijo...

Josu, pero si nadie te discute que haya o no haya librerías Linux para desarrollar productos embebidos; como dices, seguro que las hay y muy buenas, y gratis; pero también es verdad que hay gente que sigue prefiriendo utilizar tecnologías MS, sea por la razón que sea, aunque haya que pagar; pero apuesto que principalmente lo hacen porque .NET Micro Framework les da la opción de programar en C# dispositivos embebidos, de forma más o menos fácil, desde Visual Studio. Y eso, te guste o no, sigue y seguirá vendiendo, y mucha gente seguirá confiando durante muchos años en tecnologías .NET, aunque MS les haga mil y una putadas...

Dentro de 5 años puede que ya no esté programando en C# Josu, pero otro tanto te puede ocurrir a ti cuando den discontinuidad a algún proyecto opensource con el que estés trabajando. Para nuestra alegría y desgracia, hemos elegido una profesión que nos obliga a estar reciclándonos continuamente, pero ahora mismo ni tú ni yo podemos decir en qué estaremos programando dentro de 5 años, incluso si estaremos o no en este mundo de la informática...nunca se sabe.

Que conste que hablar aquí de .NET MicroFramework no implica que no vaya a hablar de tecnologías y frameworks Linux para dispositivos embebidos. De hecho, espero hacerlo (pronto) para poder recibir algún halago tuyo ;-). Soy así, una tecnología no quita la otra, yo únicamente intento quedarme con lo mejor de cada mundo...

SaludoX.

Unknown dijo...

Bueno, lonifasiko, no quiero ser pesado, sólo que yo, tras mucho reflexionar, no encuentro ni un sólo motivo que pueda inclinar a un ingeniero a usar tecnologías Ms frente a las libres. Ojo, y estoy hablando de ingeniería, no de 'gustos' o de 'romanticismos'. Podríamos discutirlo punto por punto, pero no quiero ser un plomo. Algún día, si te apetece, lo hacemos. (Sospecho que no os toca pelear por el costo de cada unidad como a otros :) pero hay muchos más argumentos)

Quizás la única justificación es la de que 'es más conocido', por no aprender un entorno y herramientas nuevas. Pero, como tú mismo dices, "hemos elegido una profesión que nos obliga a estar reciclándonos continuamente".

En cuanto a mi halago, ya lo tienes por tu blog, no hace falta que encima estés de acuerdo conmigo :)

Anónimo dijo...

Aupa Josu, para nada eres pesado ni plomo, es más, creo que si no fuese por tus comentarios (críticos y no críticos), este blog tendría grandes posibilidades de caer en el olvido.

Que sepas que entiendo perfectamente tu punto de vista, me parece muy lógico y correcto. Lo que ocurre es que yo vengo de un mundo .NET en el que sinceramente me siento muy pero que muy cómodo (distinto de romanticismo). Ojo, esto no quiere decir que siempre vaya a estar trabajando con .NET y C#, o que siempre maneje tecnologías MS. Es más, noto que últimamente estoy empezando a dar un giro bastante interesante hacia el mundo opensource y Linux, y sinceramente, me gusta poder probar tecnologías opensource alternativas a MS que me aporten cosas nuevas e interesantes.

Estoy cómodo (que no acomodado) trabajando con tecnologías .NET, pero al mismo tiempo, aunque quizás no queda claro en el blog (pensaba que sí), estoy abiertísimo al mundo opensource. Y como dices, ahora mismo no me da ninguna pereza empezar a trastear con un nuevo entorno o herramientas, de hecho, es lo que me gusta, "pegarme"con nuevas cosas, "renovarse o morir". Cuando tengamos 40 y tantos, quizás sí estaremos acomodados, pero ahora mismo, creo que es necesario ver todo lo que hay en el mundo de la informática, y quedarse con lo más interesante.

Gracias por todos tus comentarios, y como supondrás, para mí ya es un halago que me leas frecuentemente.

Gracias y saludoX.