了解现代.NET、.NET Core、.NET Framework、Mono、Xamarin和.NET Standard之间的异同。
现代.NET:指代.NET 6和前身.NET 5(来自.NET Core)。
旧.NET:指代.NET Framework、Mono、Xamarin和.NET标准。
设置开发环境Visual Studio 2022 for Windows
在Workloads选项卡上,选择以下内容:
· ASP.NET and web development
· Azure development
· .NET desktop development with C++
· Universal Windows Platform development
· Mobile development with .NET
在Individual components选项卡的Code tools部分,选择以下内容:
· Class Designer
· Git for Windows
· PreEmptive Protection – Dotfuscator
了解.NET Standard
2019年,.NET的情况是,微软控制着三个.NET平台分支,如下所示。
· .NET Core:用于跨平台和新应用程序。
· .NET Framework:用于旧应用程序。
· Xamarin:用于移动应用程序。
以上每种.NET平台都有优点和缺点,它们都是针对不同的场景设计的。这导致如下问题:开发人员必须学习三个.NET平台,每个.NET平台都有绫人讨厌的怪癖和限制。
因此,微软定义了.NET Standard,这是所有.NET平台都可以实现的一套API规范,来指示兼容性级别。例如,与.NET Standard 1.4兼容的平台表明提供基本的支持。
在.NET Standard 2.0及后续版本中,微软已将着三个.NET平台融合到现代的最低标准,这使开发人员可以更容易的在任何类型的.NET之间共享代码。
在.NET Core 2.0及后续版本中,微软郑家了许多确实的API,开发人员需要将你为.NET Framework编写的旧代码移植到跨平台的.NET Core中。有些API已经实现了,的那会抛出异常来提示开发人员,不应该实际使用它们!这通常是由于运行.NET的操作系统不同。
理解.NET Standard只是一种标准是很重要的。你不能安装.NET Standard,就像不能安装HTML5一样。要使用HTML5,就不许安装实现了HTML5标准的Web浏览器。
要使用.NET Standard,就必须安装实现了.NET Standard规范的.NET平台。.NET Standard 2.1是由.NET Core 3.0、Mono和Xamarin实现的。C# 8.0的一些特性需要.NET Standard 2.1,.NET Framework 4.8没有实现.NET Standard 2.1,所以应该把.NET Framework当作旧技术。
理解中间语言(Intermediate Language,IL)
dotnet CLI工具使用的C#编译器(名为Roslyn)会将C#源代码转换成中间语言(IL)代码,并将IL存储在程序集(DLL或EXE文件)中。IL代码语句就像汇编语言指令,由.NET的虚拟机CoreCLR执行。
在运行时,CoreCLR从程序集中加载IL代码,再由JIT编译器将IL代码编译成本机CPU指令,最后由机器上的CPU执行。
以上的两步编译过程带来的好处是,微软能为Linux、macOS以及Windows创建CLR。再编译过程中,相同的IL代码会导出运行,这将为本地操作系统和CPU指令集生成代码。
不管源代码是哪种语言编写的(如C#、Visual Basic或F#),所有的.NET应用程序都会为存储在程序集中的指令使用IL代码。使用微软和其他公司提供的反汇编工具(如.NET反编译工具ILSpy)可以打开程序集并显示IL代码。