使用 .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 網站、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: JavaScript (javascript)
編譯並執行程式,輸入以下指令
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: JavaScript (javascript)

再次執行 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: JavaScript (javascript)

開頭第一行程式碼匯入 System 命名空間,該命名空間底下所有類別可直接在 Program 內使用,不用補上 System 前綴。若未匯入,就必須寫完整類別名稱。
上方呼叫 Console.WriteLine 時,Console 為類別名稱、WriteLine 是方法名稱,可參考上圖右上角區塊。