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