开发环境搭建
搭建开发环境就像准备画室——画布(.NET SDK)和画笔(VS Code)就位了,才能开始创作(写C#代码)。
安装.NET SDK
.NET SDK(Software Development Kit)是开发C#程序的核心工具包,包含编译器、运行时和项目管理工具。你需要先安装它,才能编写、编译和运行C#程序。
Windows安装
- 访问 https://dotnet.microsoft.com/download/dotnet/8.0 下载.NET 8 SDK安装包
- 运行安装程序,按默认选项完成安装
- 打开命令提示符验证:
dotnet --version
8.0.xxx
如果看到版本号输出,说明安装成功。
macOS安装
通过Homebrew安装:
brew install dotnet-sdk
或者从官网下载macOS安装包,验证方式相同:
dotnet --version
Linux安装
Ubuntu/Debian:
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0
CentOS/RHEL:
sudo dnf install -y dotnet-sdk-8.0
验证安装:
dotnet --version
💡 提示:本书使用.NET 8(LTS长期支持版)。安装时务必选择SDK而非仅运行时(Runtime),SDK包含开发所需的全部工具。
SDK包含的关键组件
| 组件 | 作用 |
|---|---|
| Roslyn编译器 | 将C#代码编译为中间语言(IL) |
| dotnet CLI | 命令行工具,创建/构建/运行项目 |
| .NET运行时 | 执行编译后的程序 |
| NuGet包管理器 | 管理第三方库依赖 |
配置VS Code
VS Code是微软开发的免费代码编辑器,配合C#插件后可提供强大的C#开发体验。
安装VS Code
前往 https://code.visualstudio.com 下载并安装。
安装必要插件
打开VS Code后,按 Ctrl+Shift+X 打开插件市场,搜索并安装:
| 插件名 | 作用 |
|---|---|
| C# Dev Kit(Microsoft) | 语法高亮、智能提示、调试、项目管理一站式支持 |
| C#(Microsoft) | 基础C#语言服务(安装Dev Kit时通常自动安装) |
配置C# Dev Kit
安装C# Dev Kit后,插件会自动检测已安装的.NET SDK。你可以通过以下方式确认配置正确:
- 按
Ctrl+Shift+P,输入.NET: New Project,如果能弹出项目模板列表,说明配置成功 - 底部状态栏应显示.NET SDK版本号
⚠️ 注意:VS Code打开文件夹时,建议新建一个专门的文件夹(如 csharp-learn),用VS Code打开整个文件夹,而不是单个文件。这样C# Dev Kit才能正常工作。
第一个程序:Hello World
示例
使用dotnet CLI创建第一个控制台应用:
dotnet new console -n MyFirstApp
The template "Console App" was created successfully.
Processing post-creation actions...
Restoring packages...
Determining projects to restore...
Restored MyFirstApp.csproj (in 1.2s).
进入项目目录并运行:
cd MyFirstApp
dotnet run
Hello, World!
这就是你用C#写的第一个程序!dotnet new console 命令会自动生成项目结构和代码。
项目结构
创建完成后,项目文件夹内容如下:
MyFirstApp/
├── MyFirstApp.csproj
├── Program.cs
└── obj/
└── ...
| 文件 | 作用 |
|---|---|
Program.cs |
程序入口,包含主代码 |
MyFirstApp.csproj |
项目配置文件,定义SDK、目标框架等 |
obj/ |
编译中间产物目录 |
dotnet CLI常用命令
dotnet CLI是.NET开发的核心命令行工具,掌握它比依赖IDE更高效。
项目管理命令
| 命令 | 作用 | 示例 |
|---|---|---|
dotnet new console |
创建控制台项目 | dotnet new console -n MyApp |
dotnet new classlib |
创建类库项目 | dotnet new classlib -n MyLib |
dotnet new list |
列出所有可用模板 | dotnet new list |
-n 参数指定项目名称,省略则使用当前文件夹名。
构建、运行与发布
| 命令 | 作用 | 示例 |
|---|---|---|
dotnet build |
编译项目(不运行) | dotnet build |
dotnet run |
编译并运行项目 | dotnet run |
dotnet publish |
发布项目(部署用) | dotnet publish -c Release |
示例
dotnet build
MSBuild version 17.8.xxxx
Determining projects to restore...
Restored MyFirstApp.csproj (in 102 ms).
MyFirstApp -> G:\csharp-learn\MyFirstApp\bin\Debug\net8.0\MyFirstApp.dll
Build succeeded.
0 Warning(s)
0 Error(s)
🔥 实用技巧:dotnet run = dotnet build + 自动执行。开发时用 dotnet run 快速测试,正式构建用 dotnet build 检查编译问题。
顶级语句 vs 传统Program.Main
C# 9引入了顶级语句(Top-level Statements),让控制台程序的写法大幅简化。理解两种写法,有助于读懂不同时期的C#代码。
顶级语句(C# 9+,默认方式)
dotnet new console 生成的 Program.cs 默认使用顶级语句:
System.Console.WriteLine("Hello, World!");
就这样一行代码,无需命名空间、无需类、无需Main方法。编译器会自动将它包装在一个生成的 Main 方法中。
传统Program.Main写法
C# 9之前的写法,所有代码必须放在 Main 方法里:
using System;
namespace MyFirstApp
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
两种写法对比
| 特性 | 顶级语句 | 传统Program.Main |
|---|---|---|
| 代码量 | 极少 | 较多样板代码 |
| 入口方法 | 编译器自动生成 | 手动定义 static void Main |
using声明 |
可省略(用完全限定名) | 通常需要 using System; |
| 命名空间 | 无需声明 | 需要声明 |
| 命令行参数 | 通过 args 变量直接访问 |
通过 Main(string[] args) 参数 |
| 适用场景 | 简单程序、学习、脚本 | 大型项目、需要精细控制入口 |
| C#版本 | C# 9+ | 所有版本 |
📌 要点:顶级语句和传统写法功能完全等价。顶级语句只是语法糖,编译后生成的IL代码本质相同。同一个项目中只能有一个文件使用顶级语句。
使用顶级语句访问命令行参数
if (args.Length > 0)
{
System.Console.WriteLine($"Hello, {args[0]}!");
}
else
{
System.Console.WriteLine("Hello, World!");
}
dotnet run -- Alice
Hello, Alice!
-- 之后的参数会传递给程序。顶级语句中 args 由编译器自动注入。
常见编译错误
初学者一定会遇到编译错误,不要慌,学会读懂错误信息比避免错误更重要。
CS1002:应输入分号
System.Console.WriteLine("Hello, World!")
Program.cs(1,40): error CS1002: ; expected
错误信息格式为 文件名(行号,列号): 错误编号: 描述。这行代码末尾少了分号,C#每条语句必须以分号结尾。
CS0103:当前上下文中不存在该名称
Console.WriteLine("Hello, World!");
Program.cs(1,1): error CS0103: The name 'Console' does not exist in the current context
使用了 Console 但没有 using System;,也没有写完全限定名 System.Console。两种解决方式:添加 using System; 或使用 System.Console。
CS0117:不包含该成员的定义
System.Console.WritLine("Hello, World!");
Program.cs(1,17): error CS0117: 'Console' does not contain a definition for 'WritLine'
把 WriteLine 拼写成了 WritLine。编译器告诉你 Console 类中没有 WritLine 这个成员,检查拼写即可。
CS0120:非静态字段需要对象引用
namespace MyApp
{
class Program
{
string name = "C#";
static void Main(string[] args)
{
System.Console.WriteLine(name);
}
}
}
Program.cs(8,37): error CS0120: An object reference is required for the non-static field, method, or property 'Program.name'
在静态方法 Main 中访问了非静态字段 name。静态方法属于类本身,而非静态成员属于类的实例,需要先创建对象。
⚠️ 读错误信息的技巧:错误行号可能指向"出错后的下一位置"。如果某行报错,先检查该行和上一行的拼写、分号和括号。CS编号是微软官方错误代码,可直接搜索"CS编号"找到详细说明。
❓ 常见问题
📖 小节
- .NET 8 SDK是C#开发的核心工具包,Windows/macOS/Linux均可安装,通过
dotnet --version验证 - VS Code配合C# Dev Kit插件,可搭建轻量高效的C#开发环境
- dotnet CLI是项目管理的核心工具:
dotnet new创建、dotnet build编译、dotnet run运行 - 顶级语句是C# 9+的简化写法,与传统Program.Main功能等价,初学推荐顶级语句
- 编译错误信息包含文件名、行号、CS编号和描述,学会读懂错误是核心技能
📝 作业
- 在你的电脑上安装.NET 8 SDK并验证
dotnet --version输出正常,将版本号记录下来 - 使用
dotnet new console -n Homework02创建项目,修改Program.cs输出你的名字和一句问候语(如"你好,我是小明,开始学习C#!"),运行并截图 - 将顶级语句版本改写为传统Program.Main写法,确认两种写法运行结果相同
- 故意制造3种编译错误(缺少分号、拼写错误、省略using),记录编译器给出的CS编号和错误描述,练习读懂错误提示



