Windows Store Apps: Proyectos generados con un scripting de backend .NET
Windows Store Apps: Plugins on .NET Scripting Backend

Windows Store Apps: Los tipos .NET que faltan en el Backend de Scripting .NET

El backend de scripting .NET que es utilizado en Windows Store es una versión especial de .NET para esta plataforma, que no es completamente compatible con Mono. En particular algunos tipos de datos faltan y otras clases no tienen ciertos métodos, que las mismas clases tienen en Mono.

Para hacer la portabilidad de juegos existentes para la tienda de Windows más fácil, algunos de los tipos .NET que faltan son proporcionados por Unity. Adicionalmente, algunos métodos de extensión y tipos de remplazo fueron agregados para hacer la migración más fácil.

Estos tipos son colocados en PlaybackEngines\metrosupport\Managed\WinRTLegacy.dll, cada SDK de la Windows Store tiene su propio WinRTLegacy.dll.

Los Types (tipos), proporcionados por Unity incluyen:

  • System.Collections.ArrayList
  • System.Collections.Hashtable
  • System.Collections.Queue
  • System.Collections.SortedList
  • System.Collections.Stack
  • System.Collections.Specialized.HybridDictionary
  • System.Collections.Specialized.ListDictionary
  • System.Collections.Specialized.NameValueCollection
  • System.Collections.Specialized.OrderedDictionary
  • System.Collections.Specialized.StringCollection
  • System.IO.Directory
  • System.IO.File
  • System.IO.FileStream
  • System.Xml.XmlDocument
  • System.Xml.XmlTextReader
  • System.Xml.XmlTextWriter

Adicionalmente a estos un namespace WinRTLegacy es agregado para proporcionar clases adicionales y métodos de extensión. Entre estos hay:

  • Métodos de extensión Close() para la mayoría de las clases System.IO (alternativamente usted puede utilizar Dispose(), que está disponible en ambos Mono y .Net para Windows Store Apps)
  • WinRTLegacy.TypeExtensions tiene los métodos GetConstructor(), GetMethod(), GetProperty() para System.Type
  • La clase WinRTLegacy.IO.StreamReader, que es compatible con Mono System.IO.StreamReader
  • La clase WinRTLegacy.IO.StreamWriter, que es compatible con Mono System.IO.StreamWriter
  • La clase WinRTLegacy.Xml.XmlReader, que es compatible con Mono System.Xml.XmlReader
  • La clase WinRTLegacy.Xml.XmlWriter, que es compatible con Mono System.Xml.XmlWriter

La manera más simple de utilizar las clases de remplazo de WinRTLegacy es vía el uso de la directiva:

#if NETFX_CORE
using XmlReader = WinRTLegacy.Xml.XmlReader;
#else
using XmlReader = System.Xml.XmlReader;
#endif

De esta manera usted puede utilizar la clase XmlReader, que será tomada del namespace WinRTLegacy.Xml en Windows Store y desde el namespace System.Xml en otra parte.

Universal Windows 10 Apps

Algunos de los tipos fueron traídos de vuelta a .NET para Universal Windows 10 Apps, por lo tanto la implementación para estos tipos fueron quitados en WinRTLegacy.dll

Windows Store Apps: Proyectos generados con un scripting de backend .NET
Windows Store Apps: Plugins on .NET Scripting Backend