Dynamics 365 Business Central AL 啟動設定檔 launch.json 參數說明

launch.jsonDynamics 365 Business Central AL 專案 的啟動設定檔(VS Code 用來偵錯、部署擴充套件時使用)。以下的參數實例,將逐項說明與實務用途。

JSON
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Microsoft cloud sandbox",
            "request": "launch",
            "type": "al",
            "environmentType": "Sandbox",
            "environmentName": "SBDEV",
            "startupObjectId": 60100,
            "startupObjectType": "Page",
            "breakOnError": "All",
            "launchBrowser": true,
            "enableLongRunningSqlStatements": true,
            "enableSqlInformationDebugger": true,
            "tenant": "Your Tenant",
            "schemaUpdateMode": "ForceSync" // Crucial for field removal
        },
    ]
}

configurations 陣列

這是所有啟動設定(launch profiles)的集合。每一個 { ... } 代表一個可選的部署環境(例如 Sandbox、Production)。

逐項說明

設定項目說明
name顯示在 VS Code 偵錯面板中的名稱。這裡是 "Microsoft cloud sandbox",代表部署到雲端 Sandbox 環境。
request固定為 "launch",代表要啟動 Business Central 並部署此 AL 專案。
type固定為 "al",表示這是 Business Central 的 AL 專案設定。
environmentType指定環境類型:可為 "Sandbox""Production"
Sandbox 通常用於測試與開發。
environmentName指定 Business Central 環境名稱(例如 "SBDEV")。這個名稱需與你在 Business Central Admin Center 中的環境名稱一致。
startupObjectId專案啟動後自動打開的物件 ID(例如 60100)。
startupObjectType啟動的物件類型(例如 "Page""Report""Codeunit")。
常用 "Page" 方便直接開啟 UI 頁面。
breakOnError定義是否在錯誤時中斷偵錯:
可選值:NoneAllExcludeTry
設定 "All" 表示任何錯誤都會觸發中斷點。
launchBrowser若為 true,部署後會自動開啟瀏覽器並導向指定頁面(例如 startupObjectId 所對應的 Page)。
enableLongRunningSqlStatements若為 true,偵錯期間會顯示長時間執行的 SQL 查詢(效能分析用途)。
enableSqlInformationDebugger若為 true,允許在偵錯時查看 SQL 查詢資訊(可用於分析效能瓶頸)。
tenant指定要部署的 Tenant ID(多租戶環境下必填)。例如 "default""Your tenant"
schemaUpdateMode指定如何更新資料表結構:
"Synchronize" – 嘗試保留資料(安全同步)
"Recreate" – 刪除並重建資料表(資料會遺失)
"ForceSync" – 強制更新 schema,必要時移除欄位

👉 本例中的 "ForceSync" 特別重要,當在 AL 中刪除欄位或變更型別時,需要此模式才能讓 Business Central 強制同步資料結構。

實務補充

ForceSync 的風險

  • 它會直接修改資料表結構,可能導致資料遺失。
  • 建議僅在 開發 Sandbox 使用,勿在 Production 使用。

多環境設定

你可以在同一個 launch.json 中定義多組設定,例如:

JSON
"configurations": [
  { "name": "Local Sandbox", ... },
  { "name": "Cloud Sandbox", ... },
  { "name": "Production", ... }
]

startupObjectId 的技巧

開發不同模組時可臨時修改此設定,讓偵錯時直接打開該模組頁面。

開發與生產環境搭配使用建議

可以在同一個 launch.json 中維持兩組設定:

JSON
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Cloud Sandbox (Development)",
            "type": "al",
            "request": "launch",
            "environmentType": "Sandbox",
            "environmentName": "SBDEV",
            "tenant": "default",
            "startupObjectId": 60100,
            "startupObjectType": "Page",
            "launchBrowser": true,
            "breakOnError": "All",
            "enableLongRunningSqlStatements": true,
            "enableSqlInformationDebugger": true,
            "tenant": "Your Tenant",
            "schemaUpdateMode": "ForceSync" // 僅開發時使用
        },
        {
            "name": "Cloud Production (Safe)",
            "type": "al",
            "request": "launch",
            "environmentType": "Production", // 安全部署環境
            "environmentName": "PROD",
            "tenant": "default", // 或指定租戶 ID,例如 "yourcompany.onmicrosoft.com"
            
            // 啟動行為
            "startupObjectId": 22, // Customer List (可改成你的自定頁面 ID)
            "startupObjectType": "Page",
            "launchBrowser": true,
            
            // 偵錯設定
            "breakOnError": "None", // Production 不中斷
            "enableLongRunningSqlStatements": false, // 關閉效能監控
            "enableSqlInformationDebugger": false,  // 關閉 SQL 偵錯
            
            // 同步資料庫設定
            "schemaUpdateMode": "Synchronize" // 保留資料結構,安全同步
        }
    ]
}

各設定安全性說明

項目建議值原因
environmentType"Production"確保連線到正式環境,不允許強制同步。
breakOnError"None"避免生產環境中因錯誤而中斷。
schemaUpdateMode"Synchronize"僅進行安全的 schema 同步,保留現有資料。
enableSqlInformationDebuggerfalse避免額外 SQL 日誌導致效能影響。
enableLongRunningSqlStatementsfalse關閉 SQL 效能監控,避免影響生產效能。

發佈留言

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


內容索引