一起谈.NET技术,Visual Studio DSL 入门 3---创建一个简单的DSL模型

     从这节开始我们就开始我们的DSL之旅, 首先确保你已经安装了Visual Studio Sdk,并且使用的是Visual Studio 2008.我们先大概创建一个简单的DSL项目,通过这个项目来了解dsl的开发环境和流程.

1. 打开VS.NET ,新建--项目, 点击其它项目类型--扩展性(Extensibility). 这里列出来了vs.net扩展类型的项目,包括Addin,VSPackage,Dsl等项目类型,选择"Domain Specific Lan  guage Designer”,点击确定 
                
2.接下来进入DSL创建向导,将会提供四种DSL模型模板提供我们选择,其实他们只是给我们提供了不同的Sample提供查看,也方便我们更方便的开始.
   Class Diagrams  由UML类图组成,包含类,接口,关系,组合,属性,操作等.
             

 

Component Models 组件模型,子组件组成的组件.
             
      Minimal Language    只包含一个简单的空的语言模型
             
       Task Flow 创建类似UML状态图模型

 

             

3. 在这里我们选择Minimal Language,并保持Language Name默认即可,点击下一步,设计Language的模型文件的后缀名和文件图标。如果你输入的后缀名已经被使用,中间的框中会列出搜索到的注册的后缀名列表。在这里我们输入sm作为后缀名,保持使用默认的图标.
             

4. 点击下一步,进入到产品设置,主要设计产品名称,所属公司,项目名称空间.这些信息将会包含在最后生成的项目中,在最后的产品部署中起到作用。在这里我们不进行更改,可以直接保持默认即可.
             

     5. 下一步进入到签名设置,在扩展开发中任何需要部署的Package都需要强命名(将会注册到GAC),可以选择自动创建一个Key,也可以选择使用已有的key.
             

      6.  我们选择直接创建强命名key,点击下一步,这是一个设置总结界面:
                
   我们直接能查看到所有的设置信息,可以通过上一步下一步进行更改,也可直接点击左侧的导航来定位更改,确认无误后,点击完成。向导(Wizard)会自动给我们构建项目.我们暂且不管生成的这些项目结构,切换到解决方案资源管理器,点击上面的最后面的按钮“转换所有模板”(Transalte All Template).完成后,点击Debug运行,就会打开Visual Studio实验室环境(Experimental hive),也就是上面的Minimal Language界面,可以大概操作一下了,相当神奇吧,这就完成了第一个DSL项目的开发.同样你也可以选择其它三种模型,效果在上面已经列出来了.

        7.  我们再来看一下生成的项目结构,整个解决方案总共有两以下两个项目组成(其它有三个,另外就是运行后的Testing项目,稍后介绍).
Dsl: 根据你的模型数据(DslDefinition.dsl文件)生成的有关模型的操作,包括模型关系,序列化,图形,连接器等
       DslPackage:  支撑Dsl能够在Vs.net里运行,以及和Vs.net交互的操作,包括菜单,工具条,游览器等
       Dsl项目设置成了针对DslPackage项目的友元程序集(通过AssemblyInfo的InternalsVisibleTo),DslPackage中可以直接访问Dsl中的内部成员,DslPackage其实也是根据DslDefinition.dsl生成的.深入了解这两个项目的结构是非常有必要的,我们会在随后的深入过程中介绍。

        8.  查看这两个项目,发现大部分都是由后缀名为tt的文件组成,这就是t4文件(Text Templating Transformation Toolkit),类似于asp,ruby这样的解释性语言,读我们的模型生成cs代码,可以看到每个tt文件都附属了一个cs代码文件.绑定到了每个t4文件可以右键运行自定义工具Run Custom Tool,就会调用TextTemplatingFileGenerator解析t4模板文件生成目标代码,也可以向我们刚才那个点击上面的按钮转换所有的模板文件.

        9. 打开Dsl项目中的DslDefinition.dsl文件.(这是通常情况下我们使用的最重要的文件,包括我们的Dsl的所有的模型元素数据,它附属的DslDefinition.dsl.Diagram是它的图形显示文件).
                  

 

               这就是模型设计的主区域,我们来看一下它的组成部分:
             1). 工具条,这里包括模型,关系,图形. 这个工具条与.Dsl文件关系。
             2). 模型元数据. 这些概念的东西我们在下一切会介绍.
             3). 图形展现.  设计模型的展现信息,通过中间的那条线与模型对应起来
             4). Dsl Details编辑窗口, 用来编辑Dsl相关的一些信息,比如关系。
             5). 解决方案文件夹,注意上面的黄色区域就是”转换所有模板“按钮,点击下面的Dsl Explorer页签,切换到Dsl浏览器.
                  
      这里会列出来当前Dsl文件里的模型,模型元素Element,图Shape,类型,连接器Connector,Connection Builders,以通读对模型浏览器,工具条,序列化的设置。我们对Dsl的大部分设计都会在这里完成.
      Ok,就到这里,下次将介绍一些基础概念.

时间: 2024-09-24 04:21:22

一起谈.NET技术,Visual Studio DSL 入门 3---创建一个简单的DSL模型的相关文章

Visual Studio DSL入门 3 --- 创建一个简单的DSL模型

1. 打开VS.NET ,新建--项目, 点击其它项目类型--扩展性(Extensibility). 这里列出来了vs.net扩展类型的项目,包括Addin,VSPackage,Dsl等项目类型,选择" Domain Specific Lan guage Designer",点击确定 2.接下来进入DSL创建向导,将会提供四种DSL模型模板提供我们选择,其实他们只是给我们提供了不同的Sample提供查看,也方便我们更方便的开始. Class Diagrams 由UML类图组成,包含类,

Visual Studio DSL 入门 3---创建一个简单的DSL模型

从这节开始我们就开始我们的DSL之旅, 首先确保你已经安装了Visual Studio Sdk,并且使用的是Visual Studio 2008.我们先大概创建一个简单的DSL项目,通过这个项目来了解dsl的开发环境和流程. 1. 打开VS.NET ,新建--项目, 点击其它项目类型--扩展性(Extensibility). 这里列出来了vs.net扩展类型的项目,包括Addin,VSPackage,Dsl等项目类型,选择"Domain Specific Lan  guage Designer&

初学者 用visual studio中的C#编写一个简单的电子词典 在线等 求帮助

问题描述 初学者 用visual studio中的C#编写一个简单的电子词典 在线等 求帮助 求大神用visual studio2010帮忙编一个简单电子词典的程序,在线等 新人初学者求帮助 解决方案 很简单啊,写个数组就行了 解决方案二: 如果是像上面这样的电子词典,很容易解决.1.使用INI进行保存条目.(想要了解INI可以参考:http://www.cnblogs.com/Ray-chen/archive/2011/11/14/2248496.html)2.使用StreamWriter来读

一起谈.NET技术,使用VS2010为Windows7编写一个杀手级WPF应用

当你使用最新的操作系统,在最新的框架上构建应用程序,并且使用最新版本的Visual Studio的时候,你可以使用许多令人兴奋的新特性.你可以学习一下怎样使用Visual Studio 2010, WPF 4 和 the Windows API Code Pack给你的应用程序添加Windows 7 UI. Windows 7 UI有很多令人兴奋的元素,例如:全新的任务栏,或者跳转列表,视觉体验本身并不属于应用程序的范畴,但是它是应用程序体验的重要组成部分.作为一个WPF开发者,你可以把那些元素

一起谈.NET技术,Visual Studio对程序集签名时一个很不好用的地方

由于我们的项目底层使用到一个通过LogicalCallContext实现的上下文数据管理框架,导致所有的Unit Test不能正常运行.具体的现象在<只在UnitTest和WebHost中的出现的关于LogicalCallContext的严重问题>有过详细的介绍.解决的方案就是对相关的程序集进行强签名,并加到GAC中,是Unit Test能够识别基于 LogicalCallContext项目的类型.有了Visual Studio这个强大的IDE,程序集的签名工作很好实现--仅仅需要在Proje

Visual Studio对程序集签名时一个很不好用的地方

由于我们的项目底层使用到一个通过LogicalCallContext实现的上下文数据管理框架,导致所有的Unit Test不能正常运行.具体的现象在<只在UnitTest和WebHost中的出现的关于LogicalCallContext的严重问题>有过详细的介绍.解决的方案就是对相关的程序集进行强签名,并加到GAC中,是Unit Test能够识别基于LogicalCallContext项目的类型.有了Visual Studio这个强大的IDE,程序集的签名工作很好实现--仅仅需要在Projec

visual studio 2010-关于VS的一个小测试程序问题,函数调用顺序

问题描述 关于VS的一个小测试程序问题,函数调用顺序 新手学C++,把C++ primer 上的两个例子用Visual Studio 2010弄到一起的时候出现了一个问题. 一共用了三个函数放在三个cpp文件,被调用的两个均用头文件进行了声明. 两个函数实现的功能很简单分别是:1.多个数相加求和(plus()) 2.输入两个数字作为上界和下界并求和.(two_num()) 问题出现在:在main函数下进行调用的时候, 先调用two_num();再调用plus()可以正常执行. #include

在Visual Studio中用C++语言创建DLL动态链接库图文教程_C 语言

什么是DLL(动态链接库)? DLL是一个包含可由多个程序同时使用的代码和数据的库.例如:在Windows操作系统中,Comdlg32 DLL执行与对话框有关的常见函数.因此,每个程序都可以使用该DLL中包含的功能来实现"打开"对话框.这有助于促进代码重用和内存的有效使用.这篇文章的目的就是让你一次性就能了解和掌握DLL. 为什么要使用DLL(动态链接库)? 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可以将它构造成相对独立的功能模块并在之后的项目中重复

一起谈.NET技术,打包Asp.Net 网站成为一个exe方便快捷的进行客户演示

在Asp时代有一个NetBox 产品可以把整个Asp网站AllInOne的打包成一个exe,在没有IIS的情况下可以单独运行这个exe来开启整个网站.在Asp.Net 下一直没有类似的产品出现,可能是IIS已经非常的强大了,不需要类似的产品了? 但是在某种场景下还是需要一个类似功能的产品的,这个产品不是用来部分替代IIS来做一个轻量级的IIS,而是用来方便快捷的进行客户展示. 例如,当完成一个网站开发后,或者部分完成开发后,想给客户展示一下,收集一下客户的反馈,一般有两种做法: 1. 自己有主机