2

我正在尝试使用 .NETSystem.Web.Script.Serialization.JavaScriptSerializer在 MacOS 上使用 MonoDevelop 将 JSON 文件读入 Unity 中的字典。

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

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

然后我在网上看到将 DLL 添加到 assets 文件夹的任何地方都可以,所以我System.Web.Extensions.dll在 MonoDevelop 的路径中找到了一些版本的文件,它们位于:/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

尝试了所有这些,但没有一个有效,Unity给出了这个错误:

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   

所以现在怎么办?

4

2 回答 2

1

Unity uses an old version of Mono that does not support .NET 4. I believe they also remove System.Web.dll to slim it down, since System.Web mostly contains ASP.NET which isn't really relevant to game developers.

You might be able to copy over Mono's dlls, however make sure you use v2.0 of System.Web.dll and v3.5 of System.Web.Extensions.dll.

Alternatively you might try JSON.NET.

于 2012-12-26T00:08:38.367 回答
0

尝试序列化您的数据,BinaryFormatter++MemoryStreamTextAsset

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

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

于 2013-01-07T15:18:10.813 回答