2012-05-11 15 views
5

Estoy creando un nuevo mono para aplicaciones de Android con http://xamarin.com/monoforandroid enter image description heredlls Prexisiting (4 .NET framework) problema con mono para android

he seleccionado Mono para Android Aplicación utilizando Visual C# opción.

Mi versión de destino Android es: enter image description here

Fui a las referencias del proyecto y trató añadiendo mis dlls preexistente (hecha en .NET 4 Marco) y me dio este mensaje:

enter image description here

Lo extraño es que no hay ninguna opción para cambiar el .NET Framework de las propiedades del proyecto. ¿Me puedes decir lo que me estoy perdiendo?

Respuesta

5

El El problema aquí es que está tratando de hacer referencia a una DLL .NET 4 de un proyecto que no es .NET 4. Mono para Android usa su propio perfil para .NET, que es muy similar al de Silverlight (pero no exactamente el mismo). Si bien es posible agregar una DLL compilada para un perfil diferente, es muy arriesgado, ya que probablemente se encuentre con problemas en el tiempo de ejecución donde la aplicación se bloqueará, debido a que falta algo en el perfil de Mono para Android.

La mejor respuesta ahora es crear una biblioteca de clases Mono for Android, vincular los archivos apropiados de la biblioteca que desea utilizar y hacer referencia a eso. Esto le permitirá verificar en tiempo de compilación que no está utilizando nada incompatible con el perfil de Mono for Android y lo ayudará a mantenerse más cuerda a largo plazo. Tengo un viejo blog post up here que habla sobre cómo vincular archivos entre proyectos.

Dicho esto, en este caso estás de suerte porque alguien más ya ha hecho esa última parte para ti. Consulte this fork of Json.NET que ofrece versiones para MonoTouch y Mono para Android.

+0

Incluso si trato de usar archivos fuente (de mis dlls preexistentes), ¿cómo podría hacerlo ya que esos archivos usan las características de .NET 4 Framework. ¿Cómo puedo usar esos archivos fuente en ese proyecto de biblioteca de clase Mono for Android? –

+0

Digamos que tengo una clase clase pública Class1 { public static dynamic A {get; conjunto; } }. ¿Cómo puedo usar la palabra clave dinámica aquí sin la versión .NET 4? –

+0

Se agregó soporte dinámico en la versión alpha actual de Mono para Android: http://docs.xamarin.com/android/Releases/Mono_For_Android_4/Mono_for_Android_4.1.0#Dynamic_support –

2

The strange stuff is there is no option to change the .NET Framework from project properties. Can you tell me what I am missing?

No es particularmente extraña - cuadro de diálogo que fue escrito por Microsoft, con sus propios tipos de proyectos en mente. Parece que Mono para Android no tiene las mismas opciones disponibles.

Sospecho que solo tendrá que usar una versión de JSON.NET targeting .NET 3.5.

(Dicho esto, Mono para Android dice apoyar "las características del lenguaje dinámico", que suena como que debe se dirige a .NET 4. impar. Sospecho que la solución es la misma aunque.)

+0

Jon, ¿Me puede dar algunos consejos sobre cómo cambiar el marco de destino para mono para Android? Como tengo muchos dlls dirigidos a .NET 4 –

+0

@RockySingh: sospecho que si no hay otra opción, no se puede hacer, supongo. Puede encontrar que una versión de última generación de Mono para Android lo admite, por supuesto. –

+0

Puede colocar el archivo de origen en una posición compartida. Luego crea una DLL de Android y arrastra la fuente al proyecto. MonoDevelop le preguntará cómo administrar el archivo, elija vincular el archivo al proyecto. De esta forma, podría reutilizar fuentes con diferentes configuraciones de compilación (por ejemplo, otra podría ser para Silverlight o MonoTouch). – gsscoder

Cuestiones relacionadas