Why is Assembly-UnityScript.dll failing at windows certifiction?

Hi,

I am building a game to Windows store, I choose x86 no ARM in the Visual Studio build configuration, using Unity 4.5 to build the Visual Studio C# solution. All is well, I can even run the game from the Visual Studio IDE but when I use the windows certification toolkit it fails on:

FAILED
Supported APIs

Error Found: The supported APIs test detected the following errors: ◦API System.IO.FileStream in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileInfo in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.ThreadStart in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.File in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileInfo.#ctor(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileInfo.get_Exists in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileStream.Seek(System.Int64,System.IO.SeekOrigin) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileStream.Read(System.Byte,System.Int32,System.Int32) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.FileStream.Write(System.Byte,System.Int32,System.Int32) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.ThreadStart.#ctor(System.Object,System.IntPtr) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.Thread.#ctor(System.Threading.ThreadStart) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.Thread.Start in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.Thread.Sleep(System.Int32) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.Threading.Thread.Abort in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.
◦API System.IO.File.ReadAllBytes(System.String) in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.

Every error relates to Assembly-UnityScript.dll… if I remove this assembly the certification passes but then I do not see any menus in the game… so I need this .dll.
What do I do to make it pass the certification when submitting to windows store?

This seems a bit odd, I mean it build s and runs local! but why fail it there?

Cheers,
Kim

It’s because you’re using the FileStream class. The wording in the error message is a bit tricky, it’s caught me out before too.

The supported APIs test detected the following errors: ◦API System.IO.FileStream in MSCORLIB, PUBLICKEYTOKEN=B77A5C561934E089 is not supported for this application type. Assembly-UnityScript.dll calls this API.

FileStream isn’t supported for Windows 8 Store apps. If you’re using FileStream to do game saves or to save config data, use PlayerPrefs instead (it’s a form of file i/o with a cross-platform wrapper around it).