c#有关的东西用的不多,主要是unity开发用。现在又要接着搞unity了,距离上一次搞这个已经有一年多了。现在新版的Unity2018.2用了 .NET4.x 的运行时,这个和以前的 Standard 2.0 的联系区别也不清楚。这里简单查看了下介绍,梳理一些概念。
Visual Basic语言,也就是vb,是一种较老的编程语言,最多用的VB6就是在 .NET 引入前的最后一个版本。
Visual Basic .NET语言,也就是vb.net,也是一个语言,是微软2002年退出的基于.Net平台应用程序的开发语言。这个2002年退出的 Visual Basic .NET,叫做 VB 7.0,知道2017年都还有版本更新,也就是 Visual Basic 2017(VB 15.0),没有 VB 13。这个语言很少有人用了,然后就是下面的。
Visual C#,这个其实一般不太这么说,就是 C# 语言,Visual 这个前缀就是微软产品品牌了。C# 发布于2000年,多年来一直持续更新。目前也就是2018年,最新的 C# 7.3 已经发布。C# 依赖于 .NET Framework才能运行,比如 C# 6.0 要求 .NET 框架版本为 4.6,C# 7.3 要求版本为 4.7.2,对应Visual Studio版本为2017(15.7版)。
涉及到 .NET Framework,就要了解下了,尤其是之前还有 .NET Core 等概念。
.NET Framework 是第一个托管框架,这里说的托管的概念就是 C# 编译的代码是中间语言(IL),不能直接运行,需要在公共语言运行库(CLR)中运行。这里说第一个,就是2002年微软发布的。接着就是 .NET Core 的到来,它是一个开源实现,可以运行在不同的平台上,而 .NET Framework 仅仅支持Windows。另外,Mono(现在基于Mono出了新的Xamarin)这个,也就是Unity中默认用的,也是 .NET Framework 的开源实现,同样可以跨操作系统,.NET Core 也会从Mono上吸取经验。
前面说到了实现,那么就会有对应的标准,就类似HTML规范和浏览器对其实现等。
.NET Standard 就是 .NET 的标准,.NET Framework 和 .NET Core 都是对其的实现。这些托管框架都实现了基础类库(BCL),保持API一致,让程序移植到不同托管实现更简单。.NET Standard 2.0 中支持32000个API,而 1.6 版仅有13000个。目前该标准最新的也就是2.0。
到了Unity中,Api Compatibility Level 可选 .NET Standard 2.0 和 .NET 4.x 两种。其中标准2.0的会小些,手机端用更合适,4.x更大更全。Scripting Runtime Version这个选项,原来的 .NET Framework 3.5 对应C#版本为3.0,现在则有 4.x 可选。而最低也就是4.5,对应了C# 5.0,实际上Unity中的 4.x 已经支持了 C# 6.0。这个可以参考维基百科:
选择了 .NET 4.x Equivalent 后,就可以继续选择 Api compatibility Level 了,前面已经介绍。