C#开发环境

使用C#进行程序开发至少需要一文本编辑器和个编译器。

文本编辑器

C#程序的源代码就是文本,扩展名是.cs。编辑源码需要一个文本编辑器。

记事本

记事本是最简单的文本编辑器,没有语法高亮和任何提示。可以在写简单几句代码时勉强使用。

Visual Studio Code(VS Code)

VS Code是微软的一个跨平台编辑器,支持语法高亮。安装插件之后还可以调试C#程序。

使用VS Code进行C#开发,需要安装安装.NET core SDK,并使用命令行的形式编译和执行代码。

编译器

需要使用编译器将C#源代码编译到二进制程序。

.NET Framework

Windows系统下,安装.NET Framework时会自带编译器,一般在C:\Windows\Microsoft.NET\Framework\版本目录下,名称是csc.exe

可以使用命令来调用来编译源代码。

Roslyn

使用C#语言开发的C#和VB.NET开源编译器。VS,.NET core SDK使用的都是此编译器。

集成开发环境(IDE)

集成开发环境是开发使用到的一系列软件集合,包括编辑器、编译器和调试器等。使用集成开发环境可以简化开发过程。

Visual Studio(VS)

VS是微软的一个集成开发环境,支持多种语言,适合用于C#开发。

**Visual Studio Code(VS Code)**是微软的一个跨平台编辑器,安装.NET Core SDK后,也可以使用VS Code进行开发。VS Code需要通过命令行的方式来进行操作。

SharpDevelop是一个轻型的开发工具,支持C#,VB.NET等语言。它自身也是用C#编写的。

Rider是JetBrains公司的跨平台.NET IDE。

一个C#项目由多个源代码文件和资源文件组成,源代码编译之后的二进制文件被称作程序集,程序集的格式通常是dll或exe。

程序集以中间代码的形式保存,执行的时依赖.NET。

开发环境选择

本教程使用的是VS2019。请自行下载。版本选择社区版,功能选择C#桌面开发即可。

也可以使用VS Code配合.NET core SDK编译运行本教程的大多数代码。

C#运行环境

**C#**运行需要.NET。

.NET是一个程序,用来执行中间代码。

和C,C++代码不同,C#编译后的代码并不是机器代码,而是一种中间代码,这种代码不能直接执行,需要.NET来执行。它的执行方式是在需要用到的时候在将其编译成机器代码执行。 因此C#编译的程序是不能独立于.NET运行的。

.NET为我们的程序提供了很多功能,如内存管理,异常处理,多线程等。

.NET运行时

.NET Framework

专用于Windows的.NET,是最早的.NET运行时。版本有2.0,3.5,4.0,4.5,4.6,4.7,4.8。

Mono

由Xamarin公司开发的轻量跨平台.NET运行环境。

.NET core

跨平台、高性能的开放源.NET实现,是微软开发的官方版本。

使用.NET Core开发的程序在发布时可以选择独立模式,将.NET运行时嵌入到程序中。缺点是程序大小会增加。

相关术语

公共语言运行时(Common Language Runtime,CLR)

.NET运行环境。但它通常指 .NET Framework 的运行时。

虚拟执行系统(VES)

一个模拟的程序运行环境。CLR就是一个VES。

程序集(Assembly)

.NET平台各种语言代码经过编译后,生成的二进制文件。

机器代码(Machine Code)

可以由CPU直接执行的代码。

中间代码(Common Intermediate Language ,CIL)

.NET平台各种语言代码经过编译后的代码格式。

即时编译(JIT)

在程序运行时将中间代码编译成机器代码。

托管代码(managed code)

由CLR执行的代码。

公共类型系统(Common Type System, CTS)

定义公共类型,以及每个类型可以拥有的成员和行为。

公共语言规范(Common Language Specification, CLS)

描述了一个框架语言需要拥有的最小功能集。符合CLS的程序便于提供给.NET的其他语言。

基础类库(Basic Class Library,BCL)

.NET的基础类库。

应用程序调用接口(Application Programming Interface,API)

是系统提供给开发者的功能。BCL就是.NET提供给我们的接口。

公共语言基础(Common Language Infrastructure,CLI)

一个标准,使多种高级语言编写的应用程序可以在不同的系统环境中执行,而无需重写这些应用程序以考虑这些环境的独特特性。这个标准包括:

跨平台

跨平台是指一个程序能够运行于多个操作系统,不必针对每个系统重新编写。

.NET Standard

一套正式的.NET API规范。规定了.NET的基础类库有哪些类型和成员可用,目的是要提高 .NET生态的一致性。

.NET Standard有多个版本,越高版本可使用的API越多,但对应的.NET版本也越高。比如要支持.NET Standard2.0,需要.NET Framework4.6.1.NET Core 2.0

通过链接查看不同.NET实现的.NET Standard。

.NET应用范围

最早的时候C#只用于Windows,只有.NET Framework;后来有了Mono,可以有一定的跨平台能力,并可以进行移动端编程;再后来,有了微软的官方版本.NET core。

C#许多框架和Windows绑在一起了,比如WinForm,WPF,都是只能用于Windows;ASP.NET只能用于IIS。

要编写能跨平台的程序,能够跨平台的部分主要是ASP.NET core和服务。