在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 指示詞。
- 在任何程式區塊的大括號前插入換行(例如:if、for、while、foreach、using、try 等)。
- 確保方法的最後一個 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 指示詞。
- 在任何程式區塊的大括號前插入換行(例如:if、for、while、foreach、using、try 等)。
- 確保方法的最後一個 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 意見:
張貼留言