Compatibilidad entre Mono y .NET Framework

Moma48.png

Si ya tienes una aplicación escrita en .Net, ahora puedes escanearla con Mono Migration Analyzer (MoMA) para averiguar si tu aplicación utiliza funciones o clases no soportadas por Mono.

La release de Mono actual es 2.10.8. (lanzada el 19 de diciembre de 2011)

 

 

El camino más sencillo para describir qué soporta Mono actualmente es:
Todo en .NET 4.0 excepto WPF, EntityFramework y WF, WCF limitado.
Continuar leyendo

Android portado a C#

A través del blog de Miguel de Icaza nos enteramos de un interesante proyecto, el port de Android a C#, ¿pero cómo es posible esto ?

Proyecto XobotOS

El proyecto XobotOS, consiste básicamente traducir todo el código fuente de Android, a C#, con lo cual es posible ejecutar Android sobre Mono.

Ventajas

Liberarse de la máquina virtual Dalvik, y beneficiarse del rendimiento y optimización de Mono. Según pruebas realizadas por el equipo de Xamarin, esto traería un rendimientosuperlativo en el rendimiento de Android.

Mono vs Dalvik

Enlace a la Noticia

Enlace al Código fuente

 

Qué es Mono

Mono es una plataforma de software diseñada para permitir a los desarrolladores crear aplicaciones multi plataforma de forma sencilla. Es una implementación de código abierto del .Net Framework de Microsoft basada en los estándares ECMA para C# y Common Language Runtime (CLR). Creemos que aportando una plataforma de software bien lograda y estandarizada, podremos reducir las barreras para crear grandes aplicaciones para Linux.

Logo de Mono

Logo de Mono

Continuar leyendo

Cómo colaborar en un proyecto de software libre sin pedir permiso

Introducción

Ahora que he empezado a realizar mi propio proyecto de software libre, me han preguntado algunos compañeros como colaborar. En este post, expreso mi opinión de como me gustaría que colaboraran conmigo en la realización del proyecto, además de cómo he visto cómo se colabora en otros proyectos de software libre.

Continuar leyendo

Desarrollo de Apps para Ubuntu utilizando Mono como SDK

Introducción

Está de actualidad desarrollar aplicaciones para dispositivos móviles con Android como sistema operativo, iOS o Windows Phone. Esto nos da a los desarrolladores la oportunidad de hacer algo de dinero y soñar con la independencia económica.

Además existen otros mercados para Aplicaciones como puede ser la App Store en Mac OS X o Windows Store en el sistema operativo de escritorio de Microsoft. Un mercado aún no muy explotado, que no sé si será o no rentable en el futuro, es el Centro de Software de Ubuntu.

Podemos reutilizar parte del código de nuestras aplicaciones desarrolladas para Windows Phone o iOS, si usas MonoTouch, y crear aplicaciones para esta distribución de Linux.

Continue reading

Error compilando Gnome Sharp 2.24.1 y Solución I

Cada vez que tengo que compilar Mono y GtkSharp en Ubuntu y/o Linux Mint la librería (gnome-sharp-2.24.1) resulta en un error como se muestra en la siguiente salida :

/usr/bin/mcs /out:TestXfer.exe -r:/usr/lib/pkgconfig/../../lib/mono/
gtk-sharp-2.0/pango-sharp.dll -r:/usr/lib/pkgconfig/../../lib/mono/
gtk-sharp-2.0/atk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/mono/
gtk-sharp-2.0/gdk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/mono/
gtk-sharp-2.0/gtk-sharp.dll -r:/usr/lib/pkgconfig/../../lib/mono/
gtk-sharp-2.0/glib-sharp.dll
/r:../../gnomevfs/gnome-vfs-sharp.dll -r:Mono.GetOptions.dll
./TestXfer.cs
error CS0006: Metadata file `Mono.GetOptions.dll' could not be found
Compilation failed: 1 error(s), 0 warnings
make[3]: *** [TestXfer.exe] Error 1
make[3]: Leaving directory `/home/jacob/Downloads/mono/
gnome-sharp-2.24.1/sample/gnomevfs'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/jacob/Downloads/mono/
gnome-sharp-2.24.1/sample'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/jacob/Downloads/mono/
gnome-sharp-2.24.1'
make: *** [all] Error 2

La solución más sencilla es editar el fichero Makefile y buscar la siguiente linea de texto:

Continue reading

Navegar entre pantallas [MonoTouch II]

Buenas a todos,

en esta segunda entrada de MonoTouch veremos como crear aplicaciones con varias pantallas y navegar entre ellas.

Los pasos que vamos a seguir para desarrollar la aplicación serán:

  1. Crear el proyecto con MonoDevelop.
  2. Crear las pantallas (en nuestro caso crearemos tres).
  3. Dar formato a las pantallas y definir los outlets.
  4. Instanciar el NavigatorController (nos permitirá navegar entre las pantallas).
  5. Implementar el método ViewDidLoad.
  6. Probar la aplicación.

  Continue reading

Problemas con Sqlite y Solución

Puede suceder que al momento que escribimos un programa usando Mono C# y Sqlite al momento de compilar nuestro programa tengamos problemas, por ejemplo al ejecutar un programa de consola resultaba en el siguiente error:

$ mono testsqlite.exe

Unhandled Exception: System.EntryPointNotFoundException: sqlite3_column_origin_name
at (wrapper managed-to-native) Mono.Data.Sqlite.UnsafeNativeMethods:sqlite3_column_origin_name (intptr,int)
at Mono.Data.Sqlite.SQLite3.ColumnOriginalName (Mono.Data.Sqlite.SqliteStatement stmt, Int32 index) [0x00000] in <filename unknown>:0

Para solucionar el problema tenemos que compilar Sqlite nuevamente desde fuentes de la siguiente manera:

  1. Descarga del sitio de Sqlite la versión que incluye los scripts de configure para generar nuestro archivo Makefile.
  2. Descomprime el paquete usando tar -zxvf sqlite-autoconf-3071000.tar.gz y cambia dentro del directorio.
  3. Incluye los parámetros que configure debe habilitar para compilar Sqlite con make. $ CFLAGS=”-DSQLITE_ENABLE_COLUMN_METADATA”  ./configure
  4. ejecuta make; sudo make install
  5. Ahora una vez más ejecuta el programa

$ mono testsqlite.exe

WebService: Get Customers from Database
WebService: Database Connection String=journal mode=Off;data source=/home/jacob/TitaniumStudioWorkspace/labsergen/454/454ws/testing/module454.sql.db
WebService: Closing Database Connection
WebService: Database Closed Connection

En resumen es necesario compilar Sqlite con la opción -DSQLITE_ENABLE_COLUMN_METADATA para incluir las rutinas que permiten que Sqlite regrese la información especifica para las tablas, columnas definidas en una base de datos Sqlite.