2025年11月10日 星期一

在Visual Studio 2022使用提示檔協助開發-2

本文是《在Visual Studio 2022使用提示檔協助開發》系列文章的第二篇,介紹如何在Visual Studio 2022開發工具中,使用指示檔(instruction file)與提示檔案(Prompt files)來跟Github Copilot溝通以協助撰寫網站程式。

延續《在Visual Studio 2022使用提示檔協助開發》系列文章的第一篇建立的專案來撰寫指示檔(instruction file)與提示檔案(Prompt files)。


加入指示檔(
instruction file

從「Solution Explorer」視窗方案名稱上方按滑鼠右鍵,從快捷選單選擇「Add>Existing Item」項目,請參考下圖所示:

1:加入指示檔(instruction file


選取指示檔(
instruction file),它是一個文字檔,筆者使用的「csharp.instructions.md」檔案內容請參考以下列表,它是一個檔案名稱後綴「.instructions」字串且副檔名為「md」的Markdown格式檔。目前檔案內容只包含純文字,用來規範C#專案的設計風格:

 

csharp.instructions.md

C# 開發

 

 

C# 指南

 

- 永遠使用最新版本的 C#,目前是 C# 13 功能。

- 為每個函式撰寫清楚且簡潔的註解。

 

一般指南

 

- 撰寫具備良好可維護性的程式碼,包含說明為何做出特定設計決策的註解。

- 撰寫清楚的例外處理。

- 對於函式庫或外部相依性,在註解中說明其用途與目的。

 

命名規範

 

- 元件名稱、方法名稱與公開成員遵循 PascalCase 命名法。

- 私有欄位與區域變數使用 camelCase 命名法。

- 介面名稱加上前綴 "I"(例如:IUserService)。

 

格式化

 

- 偏好檔案範圍的命名空間宣告與單行 using 指示詞。

- 在任何程式區塊的大括號前插入換行(例如:ifforwhileforeachusingtry 等)。

- 確保方法的最後一個 return 陳述式獨立成行。

- 儘可能使用模式比對與 switch 運算式。

- 在參照成員名稱時,使用 nameof 而不是字串常值。

- 確保為所有公開 API 撰寫 XML 文件註解,並在適用時加入 <example> <code> 文件說明。

 

我們可以讓Github Copilot幫忙轉成標準Markdown格式。開啟Visual Studio 2022開發工具中的「Github Copilot Chat」視窗,在中間的設計畫面開啟目前的指示檔(instruction file),撰寫並送出提示如下:

將目前的檔案格式化成Markdown格式檔



由於生成式
AI每次的回應都不太一樣,你的操作畫面可能會與本文描述的不相同,以筆者測試為例,會出現一個「Apply」按鈕,可將Github Copilot回應的內容套用到目前檔案,請參考下圖所示:

2:使用Github Copilot Chat」格式化Markdown


從中間的編輯視窗,可檢視檔案異動前、後的部分,若沒有問題可以按下「
Tab」鍵接受變更,請參考下圖所示:

3:接受或拒絕變更

 

參考以下列表,為格式完的標準Markup檔案內容:

csharp.instructions.md

# C# 開發

 

## C# 指南

 

- 永遠使用最新版本的 C#,目前是 C# 13 功能。

- 為每個函式撰寫清楚且簡潔的註解。

 

## 一般指南

 

- 撰寫具備良好可維護性的程式碼,包含說明為何做出特定設計決策的註解。

- 撰寫清楚的例外處理。

- 對於函式庫或外部相依性,在註解中說明其用途與目的。

 

## 命名規範

 

- 元件名稱、方法名稱與公開成員遵循 PascalCase 命名法。

- 私有欄位與區域變數使用 camelCase 命名法。

- 介面名稱加上前綴 "I"(例如:IUserService)。

 

## 格式化

 

- 偏好檔案範圍的命名空間宣告與單行 using 指示詞。

- 在任何程式區塊的大括號前插入換行(例如:ifforwhileforeachusingtry 等)。

- 確保方法的最後一個 return 陳述式獨立成行。

- 儘可能使用模式比對與 switch 運算式。

- 在參照成員名稱時,使用 nameof 而不是字串常值。

- 確保為所有公開 API 撰寫 XML 文件註解,並在適用時加入 <example> <code> 文件說明。

 

加入提示檔案Prompt files

Visual Studio 2022開發工具「Solution Explorer」視窗方案名稱上方按滑鼠右鍵,從快捷選單選擇「Add>Existing Item」項目,選取提示檔(Prompt files),它也是一個文字檔,以本文使用的「my.prompt.md」範例為例,它是一個檔案名稱後綴「.prompt」字串且副檔名為「md」的Markdown格式檔。

 

目前檔案內容如下列表,其中包含本文要設計專案的提示,提示檔案分為兩大區塊,表頭與內容。

l  ---」符號:是 YAML Front Matter 的開始標記,常用於 Markdown 文件的開頭,定義一些metadata

l  mode: 'agent'」:指定執行模式為「agent」模式,代表這份指令是給自動化代理人(GitHub Copilot)使用。

l  model: GPT-4.1」:指定要使用的 AI 模型版本為 GPT-4.1

l  description: 」:提供這份檔案的描述,說明這是 Copilot 的指令步驟設計檔,目的是讓 Copilot 依照步驟逐步完成程式開發。

l  ---」符號:YAML Front Matter 的結束標記。

 

檔案剩餘部分為提示內容,表列如下:

my.prompt.md

---

mode: 'agent'

model: GPT-4.1

description: 本檔案為 Copilot 指令步驟設計,請依步驟逐步完成程式開發。

---

你是高效且自主的代理人,你肯定能獨立解決問題,無需每次都向使用者詢問。

請花時間仔細思考每一個步驟 - 記得嚴格檢查你的解決方案,你必須不斷迭代直到問題被解決。且所有待辦事項皆已勾選。

不要在未完成所有步驟且確認一切運作良好之前結束回合。當你說「接著我要做 X」或「現在我要做 Y」或「我要做 X」時,你必須真的去做,而非僅說說而已。

接下來請使用繁體中文回應我。

 

#建立待辦事項Todo清單

- 根據我提供的`程式設計步驟`建立待辦事項Todo清單。

- 每一個步驟都要成為一個待辦事項。

- 每一步驟開始之前都要列出所有待辦事項。

- 建立 Markdown 格式代辦清單以追蹤。

- 每完成一項用 `[x]` 標示。

- 每次標示完成都顯示更新清單給我。

- 完成每一項目,暫停執行,確認程式碼能夠正確編譯,然後等我確認,待我回應 OK,才可進行下一步。

 

 

使用以下格式建立待辦事項Todo清單,務必使用Markdown 格式

```markdown

- [ ] 步驟1:第一步描述

- [ ] 步驟2:第二步描述

- [ ] 步驟3:第三步描述

```

 

## 程式設計步驟

- 請花時間仔細思考每一個程式設計步驟,記得嚴格檢查你的解決方案,是否符合微軟Asp.net Core 9 版的框架,要符合SOLID軟體設計原則,使用DI等設計模式。

- 思考專案與專案之間的相互參考關係,思考是否正確引用命名空間。

- 是否需要額外安裝套件以協助開發。

- 必要時利用網路搜尋相關文件、文章及論壇,研究問題。

- 每一步驟完成,列出更動的程式碼,供我參考。

 

 

### Step 1

 

`CopilotWeb` 專案設計一個 `VacationDaysCalculator` 服務,包含一個 C# 方法,輸入月份,回傳特休日數,規則如下:

 

1. 6個月以上1年未滿者,3日。

2. 1年以上2年未滿者,7日。

3. 2年以上3年未滿者,10日。

4. 3年以上5年未滿者,每年14日。

5. 5年以上10年未滿者,每年15日。

6. 10年以上者,每1年加給1日,加至30日為止。

 

#### 範例

 

| 勞工服務年資特別休假天數 | 天數 |

|--------------------------|------|

| 6個月至未滿1           | 3    |

| 滿第1                  | 7    |

| 滿第2                  | 10   |

| 滿第3                  | 14   |

| 滿第4                  | 14   |

| 滿第5                  | 15   |

| 滿第6                  | 15   |

| 滿第7                  | 15   |

| 滿第8                  | 15   |

| 滿第9                  | 15   |

| 滿第10                 | 16   |

| 滿第11                 | 17   |

| 滿第12                 | 18   |

| 滿第13                 | 19   |

| 滿第14                 | 20   |

| 滿第15                 | 21   |

| 滿第16                 | 22   |

| 滿第17                 | 23   |

| 滿第18                 | 24   |

| 滿第19                 | 25   |

| 滿第20                 | 26   |

| 滿第21                 | 27   |

| 滿第22                 | 28   |

| 滿第23                 | 29   |

| 滿第24                 | 30   |

| 滿第25                 | 30   |

 

 

---

 

### Step 2

 

`VacationDaysCalculator.Tests` 專案中,加入一個測試 `VacationDaysCalculator` 服務的程式碼。 並進行單元測試,確認所有測試案例都通過。

 

 

---

 

### Step 3

 

`CopilotWeb` 專案設計一個適用 .NET 9 Web API,名為VacationController,使用DI,利用 `VacationDaysCalculator` 服務計算特休日數並傳回。 

 

---

 

### Step 4

 

`CopilotWeb` 專案加入 Swagger 功能來測試 Web API 自行安裝相關套件。

 

---

 

### Step 5

 

`CopilotWeb` 專案註冊 Razor Page 功能,然後加入一個 Razor Page 網頁,名為Index,使用完整類別名稱存取Index對應的IndexModel

使用 Bootstrap 5.3.3 版美化畫面。 

Razor Page 網頁加入一個文字方塊輸入月數,還有一個按鈕。 

按下按鈕利用 fetch httpget 請求,傳入文字方塊的值為參數,從 Step 3 設計的 Web API 取得特休天數,顯示在按鈕下方。

 

總結

本文介紹如何在 Visual Studio 2022 開發工具中利用「指示檔」(instruction file)與「提示檔案」(prompt file)輔助開發,並結合 GitHub Copilot 來提升程式設計效率。文章首先示範如何將指示檔加入專案,並透過 Copilot Chat 將其轉換為標準 Markdown 格式,以規範程式設計風格、命名規範及格式化準則。接著說明提示檔的結構與用途,檔案包含 YAML Front Matter,用於指定模式、模型及描述,並設計一系列自動化步驟讓 Copilot 按照既定流程完成開發。範例中規劃了建立休假天數計算服務、撰寫單元測試、設計 .NET 9 Web API、整合 Swagger 測試,以及建立 Razor Page 網頁等步驟,並透過待辦清單逐步驗證成果。整體流程示範了如何運用 Copilot 作為「自主代理人」,結合明確規範與提示,實現結構化、自動化的程式開發方式。


0 意見:

張貼留言