使用 .NET CLI 工具构建并运行 C# 项目
我们回到C:\csdemo 目录,上节课的HelloWorld目录的上一级目录。
创建一个新的目录,mkdir HelloWorld2 你也可以直接用右键新建文件夹方式或者
然后命令行进入到此目录中 cd HelloWorld2
执行下方命令创建全新控制台应用。console 是 .NET CLI 用于生成程序的内置模板名称:
dotnet new consoleCode language: JavaScript (javascript)
C:\csdemo>mkdir HelloWorld
C:\csdemo>cd HelloWorld
C:\csdemo\HelloWorld>cd ..
C:\csdemo>mkdir HelloWorld2
C:\csdemo>cd HelloWorld2
C:\csdemo\HelloWorld2>dotnet new console
已成功创建模板“控制台应用”。
正在处理创建后操作...
正在还原 C:\csdemo\HelloWorld2\HelloWorld2.csproj:
已成功还原。Code language: JavaScript (javascript)
备注:.NET CLI 提供多种程序模板,可用来创建 ASP.NET Web 网站、Windows Forms 图形桌面程序等不同类型项目。
创建完项目,打开项目可以看到

你也可以在终端中使用dir命令,查看文件夹内的所有文件
读者会看到,目录中多了以上三个文件和文件夹
- 项目文件:
HelloWorld2.csproj - C# 源代码文件:
Program.cs - 文件夹:
obj(存放编译配置、缓存等 .NET 编译运行所需数据)
用记事本打开HelloWorld2.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>
Code language: HTML, XML (xml)

由于小编电脑还安装了.NET 10 所以默认创建的项目是基于net10.0
打开 Program.cs,内置默认代码
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");Code language: C# (cs)
编译并运行程序,执行命令
dotnet run

运行成功后,控制台输出文本:Hello World!
有些有编程基础的读者,可能有个疑问,不是说程序的入口是main函数吗,为什么这里没有看到main函数的。
其实这是.NET 的一个新特性,叫顶层语句(无需Main),新版 C# 语法糖:极简代码场景下编译器会自动生成隐藏的 Main 入口,省去样板代码
其实上面的代码完整应该如下:
using System;
namespace HelloWorld2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}Code language: C# (cs)

再次运行dotnet run 命令

代码照样正常编译和运行。
<Project Sdk="Microsoft.NET.Sdk">:声明使用 .NET 新式 SDK 项目格式
<OutputType>Exe</OutputType>:标识项目编译后生成可执行程序(控制台程序必备)
<TargetFramework>net10.0</TargetFramework>:指定项目基于 .NET 10.0 框架运行
// 引入系统内置命名空间,Console控制台类就存放在System中
using System;
// 定义项目专属命名空间HelloWorld2,用于隔离不同项目/类,避免类名冲突
namespace HelloWorld2
{
// 定义程序主类,.NET控制台模板默认命名为Program
class Program
{
/// <summary>
/// C#程序唯一入口方法,程序启动时会自动执行这个方法
/// static:静态方法,不需要实例化Program类就能直接调用
/// void:无返回值,程序执行完不返回数据给操作系统
/// string[] args:字符串数组,接收运行程序时传入的命令行参数
/// </summary>
static void Main(string[] args)
{
// Console.WriteLine():控制台输出方法
// WriteLine代表输出文本后自动换行
// "Hello World!" 是要打印到命令行窗口的字符串内容
Console.WriteLine("Hello World!");
}
}
}Code language: C# (cs)

顶部第一句代码 引入了System这个命名空间,这个命名空间下面的类就可以在Program代码中使用了,可以省略不用写System。如果不应用,则需要写全名。
上面调用的Console.WriteLine 的Console就是类名,WriteLine就是方法名,参考上图右上侧。