Cómo crear una biblioteca de clases basada en MonoGame que se utilizará desde UWP, iOS y Android

He instalado VisualStudio 2015, Xamarin y MonoGame 3.5. Voy a construir mi aplicación XNA para Windows UWP, iOS y Android.

Tengo algunas bibliotecas basadas en XNA … y necesito construirlas para los tres sistemas de destino (Windows UWP, iOS y Android), pero no hay manera de crear una biblioteca para Windows UWP. He intentado crear un MonoGame Windows 10 Universal Project , pero tal proyecto no puede ser convertido para generar un DLL.

También he intentado crear un proyecto de Class Library (Universal Windows) , pero luego no pude agregar MonoGame.Framework a las referencias.

Tengo el mismo problema al crear un MonoGame Android Project … no hay manera de cambiar a un proyecto de biblioteca. El único proyecto MonoGame que se puede modificar para ser un proyecto de biblioteca es MonoGame iOS Project .

Dicho esto, ¿cómo puedo crear una biblioteca de clases basada en XNA (MonoGame) para ser utilizado desde UWP, iOS y Android?

Por lo que sé, sólo tienes 2 opciones aquí.

  • Bibliotecas de clases portátiles
  • Proyectos compartidos

Realmente no he utilizado proyectos compartidos mucho. La forma en que los entiendo es que te permiten compartir código entre varios proyectos como si viviera en una biblioteca, pero en realidad se compila directamente en el proyecto de referencia. Pueden ser pensado de como el archivo avanzado que liga.

Las bibliotecas de clase portátiles son un poco de una bestia diferente. Los he utilizado en el proyecto MonoGame.Extended con gran éxito, pero no siempre fue fácil. La forma en que funcionan es proporcionar un subconjunto de funciones que funcionan en todas las plataformas de destino. Compilar a un DLL que puede ser referenciado por cualquiera de los proyectos y usted puede estar seguro de que el código será el mismo.

Hay un par de desventajas de usar un PCL:

  • Sólo puede utilizar un subconjunto de funcionalidad. Sorprendentemente, esto no se pone en la forma demasiado a menudo.
  • Si la PCL hace referencia a otra biblioteca, también tiene que ser una PCL.

El segundo punto es donde las cosas se ponen un poco complicado con MonoGame. Normalmente, MonoGame no se envía como un PCL, pero una versión PCL se ha publicado en NuGet que se puede utilizar.

Tal y como está ahora, el paquete NuGet es una versión detrás del lanzamiento oficial pero sorprendentemente que realmente no importa porque es un cebo y switch PCL que esencialmente significa que sólo proporciona la interfaz a la DLL real que se utiliza en tiempo de ejecución. En otras palabras, su juego seguirá felizmente referencia a la versión 3.5, incluso si el PCL es la versión 3.2, siempre y cuando la interfaz no ha cambiado.

Se habla de mejorar esta situación en la versión 3.6.

Me di cuenta de proyectos MonoGame se construyen utilizando. Net 4.5 por defecto. Las bibliotecas de clases regulares por defecto a la última versión instalada de .Net que en mi caso era 4.5.2. Fui capaz de hacer referencia a una biblioteca de clases regulares yendo a sus propiedades de proyecto y estableciendo el marco de destino a 4.5. Espero que esto ayude.

  • Desventajas del desarrollo de aplicaciones móviles multiplataforma con Visual Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.