首页 > 代码库 > Unity中使用c#语言在开发环境正常发布却报数据类型不支持错误的注意事项

Unity中使用c#语言在开发环境正常发布却报数据类型不支持错误的注意事项

Windows Store Apps: Missing .NET Types

Suggest a change
 

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close
                                         

Cancel

 

On Windows Store Apps Microsoft .NET is used instead of Mono. There 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 Windows Store Apps 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.

Types, provided by Unity include:

  • 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

In addition to these a namespace WinRTLegacy is added to provide additional classes and extention methods. Among there are:

  • Extention methods Close() for most System.IO classes (alternatively you can use Dispose(), which is available on both Mono and .NET for Windows Store Apps)
  • WinRTLegacy.TypeExtensions has methods GetConstructor(), GetMethod(), GetProperty() for System.Type
  • WinRTLegacy.IO.StreamReader class, that is compatible with Mono System.IO.StreamReader
  • WinRTLegacy.IO.StreamWriter class, that is compatible with Mono System.IO.StreamWriter
  • WinRTLegacy.Xml.XmlReader class, that is compatible with Mono System.Xml.XmlReader
  • WinRTLegacy.Xml.XmlWriter class, that is compatible with Mono System.Xml.XmlWriter

The simplest way to use the replacement classes from WinRTLegacy is via using directive:

#if NETFX_COREusing XmlReader = WinRTLegacy.Xml.XmlReader;#elseusing XmlReader = System.Xml.XmlReader;#endif

参考网址:http://docs.unity3d.com/Manual/windowsstore-missingtypes.html

Unity中使用c#语言在开发环境正常发布却报数据类型不支持错误的注意事项