首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

Visual Studio DSL 入門 3:建立第一個簡單 DSL 模型專案

     編輯:關於.NET

理論鋪陳夠了,讓我們動手建立第一個 DSL 專案,體驗從零到可執行設計器的完整流程。

一、建立專案

  1. 開啟 Visual Studio,選擇 檔案 > 新增 > 專案
  2. 在「其他專案類型」展開 擴充性,選擇 Domain-Specific Language Designer
  3. 點擊確定,進入 DSL 專案精靈

新增 DSL 專案對話框

二、選擇專案範本

精靈提供四種預設範本,本質上提供不同的起始模型樣本:

  • Class Diagrams:UML 類圖風格,含類別、介面、關聯、組合、屬性、操作
  • Component Models:組件模型,子組件組成父組件
  • Minimal Language:最精簡的空白語言模型,適合從頭建構
  • Task Flow:類 UML 狀態圖模型

Class Diagrams 範本

Component Models 範本

Minimal Language 範本

Task Flow 範本

三、專案設定步驟

  1. 選擇 Minimal Language,語言名稱保持預設,下一步
  2. 檔案副檔名與圖示:輸入 sm 作為副檔名,使用預設圖示。若副檔名已被註冊,精靈會列出衝突清單
  3. 產品資訊:產品名稱、公司、專案命名空間。這些資訊將內嵌於生成組件中,部署時生效。保持預設即可
  4. 強式命名簽章:VSX 部署需強命名(註冊至 GAC)。選擇自動建立金鑰
  5. 確認摘要:檢視所有設定,確認無誤後點擊完成

副檔名設定

產品資訊設定

強式命名設定

設定摘要確認

四、建置與執行

  1. 精靈自動建構方案結構
  2. 切換至 方案總管,點擊工具列最右側的 轉換所有範本 按鈕
  3. 完成後按 F5 偵錯啟動,將開啟 Visual Studio 實驗室環境
  4. 在實驗環境中新增 .sm 檔案,即可操作剛建立的 DSL 設計器

同樣方式可嘗試其他三種範本,效果如上圖所示。

五、方案結構解析

完整方案包含兩個核心專案(另含測試專案):

專案職責
Dsl 根據 DslDefinition.dsl 產生模型操作邏輯:關聯、序列化、圖形、連接器等
DslPackage 支撐 DSL 在 VS 整合運行:選單、工具列、模型瀏覽器、VS 擴充點整合

關鍵架構細節:Dsl 專案透過 InternalsVisibleTo 將 DslPackage 設為友元組件,使 Package 可直接存取 Dsl 內部成員。兩個專案皆由 DslDefinition.dsl 產生,深入理解其結構是進階開發的基石。

六、T4 範本驅動生成機制

專案中大量 .tt 檔案是 Text Templating Transformation Toolkit (T4) 範本,類似 ASP/Ruby 的解釋式語言,讀取模型產生 C# 程式碼。每個 .tt 檔對應一個生成的 .cs 檔。

  • 單一範本轉換:右鍵 .tt 檔選擇 執行自訂工具
  • 批次轉換:工具列 轉換所有範本 按鈕
  • 底層引擎:TextTemplatingFileGenerator

七、DslDefinition.dsl 設計介面導覽

DslDefinition.dsl 主設計介面

核心區域組成:

  1. 工具列:模型、關聯、圖形元素建立工具
  2. 模型中繼資料區:領域類別與關聯定義
  3. 圖形呈現區:透過中間連接線與模型綁定
  4. DSL Details 視窗:編輯關聯等進階屬性
  5. 方案資料夾:黃色區域為「轉換所有範本」按鈕;切換至 DSL Explorer 索引標籤

DSL Explorer 視窗

DSL Explorer 列出:模型元素、圖形、連接器、連接建構器、模型瀏覽器/工具箱/序列化設定。絕大多數 DSL 設計工作在此完成。

第一個 DSL 專案已就緒,下一篇將正式進入領域模型建模實戰。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved