Compilar contenidos en XNA durante la ejecución de juegos.

Uno de los problemas que solemos tener cuando usamos XNA Game Studio 4.0 es que no podemos trabajar con el pipeline en tiempo de ejecución en juegos para Windows. Este escenario se nos plantea cuando queremos por ejemplo guardar un objeto usando el IntermediateSerializer para usar el XML resultante como plantilla para crear más archivos de contenido en el proyecto.

Y es que por defecto, los juegos hechos con XNA Game Studio 4.0 para Windows usan el profile del framework .NET Framework 4.0 Client Profile. Este profile es una versión simplificada de .NET que contiene casi todas las funcionalidades que una aplicación puede tener. Se creó para que las aplicaciones usasen un redistribuible más pequeño y no fuese tan pesada la descarga de una aplicación. Y entre otras cosas, este profile no lleva incluido a MSBuild.

Entonces, para poder usar los assemblies que compilan y transformas los contenidos usando el Pipeline tenemos que hacer que nuestro juego use la versión completa del framework. Esto lo conseguimos muy fácilmente:

  1.  Hacemos clic derecho en el proyecto del juego y seleccionamos la opción de Propiedades.
  2. Buscamos la opción Target Framework en el que debe decir: ".NET Framework 4.0 Client Profile"  y lo cambiamos para con la opción de .NET Framework 4.0.
  3. Guardamos las opciones, el proyecto se recargará y ya está.

Una vez seguidos estos sencillos pasos si vamos al diálogo de añadir referencias al proyecto veremos los assemblies necesarios para trabajar con el Pipeline y compilar contenidos en tiempo de ejecución.

Espero que os sirva.

Juan María Laó Ramos.