使用 .NET CLI 建立專案

使用 .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 指令,列出資料夾內所有檔案

讀者會發現目錄內多出三個檔案與一個資料夾

  1. 專案設定檔:HelloWorld2.csproj
  2. C# 原始碼檔:Program.cs
  3. 資料夾: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 是方法名稱,可參考上圖右上角區塊。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *