如何在Unity C#Script中使用System.Xml.Linq?

时间:2013-07-24 14:44:09

标签: c# linq unity3d monodevelop q

使用unity和c#以及当我尝试这些行时

using System.Xml.Linq;

我收到此错误

  

类型或命名空间名称Linq' does not exist in the namespace System.Xml'。你错过了装配参考吗?

所以我通过大量搜索在线发现,Linq可能会导致问题,您需要在MonoDevelop中手动添加引用。所以我在那里添加了一个引用(右键单击解决方案窗格中的References,单击Edit References并浏览System.Xml.Linq)

仍然没有运气,

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

我认为这篇SO帖子会回答你的问题...

https://stackoverflow.com/a/875704/1246574

这与你所拥有的问题差不多。

答案 1 :(得分:0)

您无法手动修改monodevelop(或visual studio)解决方案或项目。因为它们是由Unity生成的。即使您修改它,Unity也可以在重新生成解决方案文件时覆盖您的更改。

您无法使用某些命名空间的原因是在Unity项目设置中选择的.net / mono版本。

在本文档http://docs.unity3d.com/Documentation/Manual/class-PlayerSettings.html

中搜索“API兼容级别”

来电者,停止修改生成的代码文件。这是2013年!

答案 2 :(得分:0)

来自this帖子,我发现Unity默认不支持.NET 3.5(这是使用Linq所必需的)。在Xtro所说的设置中,你只能选择.NET 2.0。相反,您需要将所需的.dll文件拖放到Unity中,就像纹理一样。有点hackish,但它的工作原理。再一次,就像Xtro所说,没有理由来编辑MonoDevelop设置。它们对最终编译没有影响。

编辑:请参阅Xtro的替代解决方案的答案。他能够通过将API兼容级别更改为.NET 2.0(而非子集)来使Linq工作。

编辑2:我刚刚从Unity 4.1更新到4.2,并且出现了Linq定义两次的错误。通过删除.dll,我解决了错误。注意我还在使用.NET 2.0 Subset。看起来他们默认添加了Linq支持。