天天看點

Visual Studio 2017 DSL 入門

Visual Studio 2017 DSL 入門

    • DSl
    • DSL平台簡單介紹
    • Visual Studio DSL
    • Visual Studio 2017 DSL
    • 狀态機實作

DSl

領域特定語言(英語:domain-specific language、DSL)指的是專注于某個應用程式領域的計算機語言。又譯作領域專用語言。

世界級軟體開發大師和軟體開發“教父”Martin Fowler的書《領域特定語言》(原英文名《Domain-Specific Languages》),ThoughtWorks中國翻譯。全面詳盡地講解了各種DSL及其構造方式,揭示了與程式設計語言無關的通用原則和模式,闡釋了如何通過DSL有效提高開發人員的生産力以及增進與領域專家的有效溝通,能為開發人員選擇和使用DSL提供有效的決策依據和指導方法。

DSL平台簡單介紹

MetaEdit+ http://www.metacase.com/ 圖形化的DSL工具

GMF,EMF http://www.eclipse.org/modeling/gmf/ 使用 Eclipse Modeling Framework (EMF) 和 Graphical Modeling Framework (GMF) 技術來為領域特定語言(DSL)産生領域特定模組化(DSM)輔助工具

Visual Studio DSL 微軟的DSL平台

Visual Studio DSL

Visual Studio DSL入門系列文章是開始了解DSL的一個很好的資料,這個系列的作者是孤獨俠客(似水流年),其部落格位址為:http://lonely7345.cnblogs.com/ 。這系列文章位址如下:

Visual Studio DSL 系列總結

Visual Studio DSL 入門 1

Visual Studio DSL 入門 2

Visual Studio DSL 入門 3—建立一個簡單的DSL模型

Visual Studio DSL 入門 4—基本概念

Visual Studio DSL 入門 5—了解生成的域類和域關系

Visual Studio DSL 入門 6—DSL的圖形表示1

Visual Studio DSL 入門 7—DSL的圖形表示2

Visual Studio DSL 入門 8—建立狀态機中繼資料模型

Visual Studio DSL 入門 9—建立狀态機的圖形符号

Visual Studio DSL 入門 10—完善狀态機案例

Visual Studio DSL 入門 11—為狀态機設計器添加規則

Visual Studio DSL 入門 12—狀态機設計器的規則(Rule)和驗證(Validation)

Visual Studio DSL 入門 13—結合T4生成代碼

Visual Studio DSL 入門 14—用Wix制作安裝程式

Visual Studio 2017 DSL

上面列出的系列部落格,雖然在Visual Studio 2017中,大部分操作是相似的,但這畢竟是很久以前寫的,有寫操作難免會不一樣,故在此記錄下來:

SDK的下載下傳方式:

打開vs,菜單欄選擇“工具”,“擷取工具和功能”,在彈出的框中選擇“單個元件”,勾選“SDK、庫和架構”下的“模組化SDK”,然後點有下角的修改進行安裝即可。

Visual Studio 2017 DSL 入門

T4編輯器的下載下傳:

打開vs,菜單欄選擇“工具”,“擴充和更新”,在彈出的框中選擇“聯機”,然後在右邊輸入“t4 toolbox”進行搜尋,找到“T4 Toolbox for Visual Studio 2017”後進行安裝即可。

Visual Studio 2017 DSL 入門

建立項目

項目建立時,在Visual C#下的Extensibility中選擇Domain-Specific Language Designer,剩下操作與Visual Studio DSL 入門中的一樣。

Visual Studio 2017 DSL 入門

轉換所有模闆

解決方案檔案夾沒有看到”轉換所有模闆“按鈕,但是菜單欄有,位置是“生成”裡面的“轉換所有T4模闆”。

Visual Studio 2017 DSL 入門

自動改名

在Visual Studio DSL 入門系列文章的第8篇中,作者說在修改某些名稱或者屬性名的時候,其他相應的部分名稱會自動修改,我實際用的時候,發現并沒有自動修改,隻好手動修改了。也不知道是不是我操作不規範。

添加域屬性後報錯

在Visual Studio DSL 入門系列文章的第8篇中,有這樣一個步驟:

給域關系Transition右鍵添加域屬性(DomainProperty)Event,Condition,Action,Label.類型都為string.

在做完這個步驟後,如果直接儲存,發現是會報錯的。報錯說明是這樣的:在類 State 的 XML 類資料中,關系 Transition 的 XmlRelationshipData 應包括 UseFullForm=“true”,因為關系具有屬性或可繼承屬性。

Visual Studio 2017 DSL 入門

這裡需要修改UseFullForm屬性,修改步驟是這樣的,在“DSL資源浏覽器”頁籤中,依次選擇“XML序列化行為”,“類資料”,“State”,“元素資料”,“Transition”,選中這裡的"Transition"後,在“屬性”頁籤中将“Use Full Form ”值改為true就可以了。

Visual Studio 2017 DSL 入門

安裝程式

Visual Studio DSL 入門系列文章的第14篇中,作者使用的是wix制作安裝程式把我們自己寫的dsl加入到visual studio中,但是,在visual studio 2017中,我并沒有看到Domain Specific Language Setup這個項目。實際上,visual studio 2017為我們提供了另一種安裝方法:vsix,編譯項目後,現找到在我們的項目中的“\DslPackage\bin\Debug”檔案夾(就是DslPackage項目的輸出檔案夾,如果配置不一樣,可能會有略微不同),這個檔案夾裡面有個字尾名為“.vsix”的檔案,我這裡的完整檔案名是“Company.LanguageSm.DslPackage.vsix”,直接輕按兩下這個檔案,就可以為visual studio 2017安裝自己寫的dsl了,安裝後就可以在建立項中使用了,而且,即使沒有安裝SDK的vs也可以使用,隻要有.net環境就行。

狀态機實作

圖檔展示

Visual Studio 2017 DSL 入門
Visual Studio 2017 DSL 入門

代碼下載下傳

下載下傳連結

https://download.csdn.net/download/hui_0_/11146807

作者:hui_0_

出處:https://blog.csdn.net/hui_0_/article/details/89468302

繼續閱讀