当 Mono 支持 .NET 3.5 时,为啥 Unity 使用 .NET 2.0?

Posted

技术标签:

【中文标题】当 Mono 支持 .NET 3.5 时,为啥 Unity 使用 .NET 2.0?【英文标题】:Why does Unity use .NET 2.0 when Mono supports .NET 3.5?当 Mono 支持 .NET 3.5 时,为什么 Unity 使用 .NET 2.0? 【发布时间】:2016-04-01 13:02:39 【问题描述】:

Unity 使用 Mono 来实现多平台兼容性。 因此,使用 .NET 4.0 或更高版本没有意义,因为 Mono 也不支持它们。

然而 Mono 确实支持 3.5,事实上它支持了它的大部分功能,所以我想知道,为什么 Unity 仍然使用将近十年前的 .NET 版本。

我了解大多数(如果不是全部)开发人员更喜欢稳定性和熟悉度而不是尖端技术。我只想知道这个决定的可能原因是什么。特别是因为后来的 .NET 版本引入了几个非常好的特性。 Compatibility reference for Unity.

【问题讨论】:

大部分的改进。 Net 3.5 是 API 添加的。 Linq,任务,WPF,WCF。这些东西在统一中并不是非常有用,是吗? Mono 也支持 .NET 4.0 和 4.5。 我希望第一条评论是讽刺。 【参考方案1】:

根据this site,这与其他计算机的支持有关。大多数计算机将能够运行 .NET 2.0 但不能运行 3.5。它还运行 C# 4,我相信是 5,但绝对不是 C# 6。出于某种原因,它们有点落后。我认为这是因为升级所有内容几乎没有什么好处。

【讨论】:

这实际上是因为他们在与 Xamarin 争夺许可(单运行时本身是 Xamarin 下的 LGPL),而不是因为更新没有什么好处。有巨大的好处。 Mono 运行时现在使用 MIT 许可证。【参考方案2】:

.net 2.0 及其子集用于 apiCompatiblilty,据说它用于使用 3rd 方库,但您可以在代码中使用 .net 3.5 功能,正如您所说的那样,mono 支持它,例如 system.linq,尽管有对它有一些限制,例如某些名称空间不可用,例如: system.data , linq 对移动平台也有一些限制http://forum.unity3d.com/threads/to-linq-or-not-to-linq.223887/

【讨论】:

以上是关于当 Mono 支持 .NET 3.5 时,为啥 Unity 使用 .NET 2.0?的主要内容,如果未能解决你的问题,请参考以下文章

Windows 7 不包含 .net 3.5 为啥? [关闭]

CentOS 7.2下安装Mono 5.0

为啥 .NET framework 3.5 离线安装程序比 .NET 4 离线安装程序大 200 MB?

为啥我的 .net 项目针对 .net framework 3.5 的 System.dll 版本是 2.x?

Mono .NET 是不是支持和编译 C++/CLI?

如何使用 Mono 在 XSP 上运行 .NET 4.5?