Version: 2017.2
Universal Windows Platform: Generated project with .NET scripting backend
Universal Windows Platform: Plugins on .NET Scripting Backend

Universal Windows Platform: Missing .NET Types on .NET Scripting Backend

The .NET scripting backend that is used on Universal Windows Apps is a special .NET version for this platform, which is not entirely compatible with Mono. In particular some data types are missing and some other classes don’t have certain methods, that the same classes do have in Mono.

To make porting existing games to Universal Windows Platform easier, some of the missing .NET types are provided by Unity. In addition some extension methods and replacement types were added to make migration easier. These types are placed in PlaybackEngines\metrosupport\Managed\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:

  • Extention methods Close() for most System.IO classes (alternatively you can use Dispose(), which is available on both Mono and .NET for Universal Windows Platform)
  • 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

The simplest way to use the replacement classes from WinRTLegacy if the namespace doesn’t match is via using directive:

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

This way you can use XmlReader class, which will be taken from WinRTLegacy.Xml namespace on Universal Windows Platform and from System.Xml namespace elsewhere.


• 2017–05–16 Page amended with no editorial review

Universal Windows Platform: Generated project with .NET scripting backend
Universal Windows Platform: Plugins on .NET Scripting Backend