2012-12-25 25 views
2

我想使用.NET的System.Web.Script.Serialization.JavaScriptSerializer在MacOS上使用MonoDevelop将JSON文件读入Unity中的Dictionary。不能在MacOS上的Unity和MonoDevelop中使用.NET的JavaScriptSerializer

到目前为止,我已将System.Web.Extensions程序集添加到MonoDevelop中,这使得它可以构建“Assembly-CSharp”项目。

但是当我回到Unity时,它仍然显示错误:错误CS0234:命名空间System中不存在类型或名称空间名称Web。您是否缺少装配参考?

然后我说添加DLL的任何地方注入资产的文件夹会做在网络上阅读,所以我找到了MonoDevelop中的路径里面的文件System.Web.Extensions.dll的一些版本,它们在:/Applications/Unity/MonoDevelop.app/Contents/Frameworks/Mono.framework/Versions/2.10.2/lib/mono/gac/System.Web.Extensions

有3个文件夹与不同版本的文件:1.0.61025.0__31bf3856ad364e353.5.0.0__31bf3856ad364e354.0.0.0__31bf3856ad364e35

试过所有的人,但没有工作,团结给出了这样的错误:

Internal compiler error. See the console log for more information. output was: 
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. 
File name: 'System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
    at (wrapper managed-to-native) System.Reflection.Assembly:InternalGetType (System.Reflection.Module,string,bool,bool) 
    at System.Reflection.Assembly.GetType (System.String name, Boolean throwOnError, Boolean ignoreCase) [0x00000] in <filename unknown>:0 
    at System.Reflection.Assembly.GetType (System.String name) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.GetTypeInAssembly (System.Reflection.Assembly assembly, System.String name) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.RootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.GlobalRootNamespace.LookupTypeReflection (Mono.CSharp.CompilerContext ctx, System.String name, Location loc, Boolean must_be_unique) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Namespace.LookupType (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Namespace.Lookup (Mono.CSharp.CompilerContext ctx, System.String name, Location loc) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.TypeManager.CoreLookupType (Mono.CSharp.CompilerContext ctx, System.String ns_name, System.String name, Kind type_kind, Boolean required) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.TypeManager.InitCoreTypes (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Compile() [0x00000] in <filename unknown>:0 
    at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 

那么,现在呢?

+0

志愿者将本程序集加入开源的Mono项目? – bmargulies

+0

当然,我该怎么做? – Petruza

+0

Unity标签用于Microsoft Unity。请不要滥用它。 –

回答

1

Unity使用不支持.NET 4的Mono的旧版本。我相信他们也删除System.Web.dll以减小它,因为System.Web大多包含ASP.NET,它与游戏开发商。

您可能能够复制Mono的dll,但请确保您使用System.Web.dll的v2.0和System.Web.Extensions.dll的v3.5。

或者,您可以尝试JSON.NET。

+0

很感谢!那么,是否有任何Unity-Mono内置方式从文件中获取数据,而不涉及经典的fseek fseek方式?也许是XML或类似的结构。即使常规的.ini文件解析也可以。 – Petruza

+0

不确定,因为我不确切知道Unity删除或添加的内容。对于XML,我假设您可以访问System.Xml.dll和System.Xml.Linq.dll,或者对于类似ini的解析,您可以直接使用System.IO类,特别是简单的System.IO.File.ReadAllLines。 –

0

尝试序列化数据,BinaryFormatter + MemoryStream + TextAsset

BinaryFormatter + MemoryStream:对象< ==>字节[]

TextAsset.bytes用于二进制数据文件。

相关问题