團隊開發中,統一代碼風格、自動帶入作者/時間/版權/公司等資訊,能大幅降低 Code Review 成本、避免版權糾紛。Visual Studio 2005+ 內建「專案/項目模板」機制,配合「個人模板目錄」即可零成本實現標準化輸出。
| 版本 | 系統內建模板 | 個人模板 (預設) |
|---|---|---|
| VS 2008 (9.0) | C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates | %MyDocuments%\Visual Studio 2008\Templates |
| VS 2010 (10.0) | C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates | %MyDocuments%\Visual Studio 2010\Templates |
| VS 2019/2022 | %ProgramFiles%\Microsoft Visual Studio\ | %UserProfile%\Documents\Visual Studio |
關鍵步驟:將系統內建 ItemTemplates、ProjectTemplates 整份複製到個人模板目錄,再逐一修改 .zip 內的 .cs / .vstemplate。
Class.zip
Class.cs // 類別內容
Class.vstemplate // 模板元數據
Class.cs
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;$endif$
using System.Text;
namespace $rootnamespace$
{
class $safeitemrootname$
{
}
}
Class.cs (含團隊標準註解)
using System;
using System.Collections.Generic;
$if$ ($targetframeworkversion$ == 3.5)using System.Linq;$endif$
using System.Text;
namespace $rootnamespace$
{
///
/// 作者:$username$
/// 時間:$time$
/// 公司:$registeredorganization$
/// 版權:$year$-2025
/// CLR版本:$clrversion$
/// 專案:$projectname$
/// 說明:$safeitemrootname$ 核心業務邏輯
/// 唯一標識:$guid1$
///
public class $safeitemrootname$
{
public $safeitemrootname$()
{
}
}
}
Class.zip (必須為 ZIP 格式) 並覆蓋個人模板目錄
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace WCFClient
{
///
/// 作者:zhoufoxcn
/// 時間:2024-03-15 14:30:22
/// 公司:NetSky Technologies
/// 版權:2024-2025
/// CLR版本:4.0.30319.42000
/// 專案:WCFClient
/// 說明:OrderService 核心業務邏輯
/// 唯一標識:a1b2c3d4-e5f6-7890-abcd-ef1234567890
///
public class OrderService
{
public OrderService()
{
}
}
}
| 參數 | 含義 | 範例 |
|---|---|---|
| $rootnamespace$ | 專案預設命名空間 | MyApp.Core |
| $safeitemrootname$ | 檔案名 (合法識別碼) | OrderService |
| $time$ | 建立時間 | 2024-03-15 14:30:22 |
| $year$ | 年份 | 2024 |
| $username$ | 當前登入用戶 | john.doe |
| $registeredorganization$ | 註冊組織 (VS 安裝資訊) | NetSky Technologies |
| $clrversion$ | CLR 版本 | 4.0.30319.42000 |
| $guid1$ ~ $guid10$ | 10 組不同 GUID | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| $targetframeworkversion$ | 目標框架版本 | 4.7.2 |
| $projectname$ | 專案名稱 | WCFClient |
參數命名雖不遵循 Pascal/Camel,但皆為單字全拼組合,對照生成結果即可推斷用途。
$if$ ($targetframeworkversion$ == 4.8)using System.Text.Json;$endif$ProjectTemplates\CSharp\assemblyinfo.cs 統一組件版權/版本資訊。「工欲善其事,必先利其器。」花 30 分鐘定制模板,換來長期的規範輸出與版權保護,極高 CP 值。立即行動,為團隊代碼貼上專屬標識!