本来是很想写关于VS的DSL的文章的,有点小忙,就一直在拖延,忽然有看见了“《在Visual Studio 2012中使用VMSDK开发特定领域语言》”,又有写的欲望了,这段时间没事,而且处于寂寞无聊的状态,就准备写一个关于自己应用DSL(Domain-Specific Languages)经验的小系列,不讲详细的系统的技术,只讲具体应用中用到的。而且作为编程的新手,就分享一下仅有的一点点经验,不知道能不能坚持下来。

我用过的是VS2010,那这篇文章就针对VS2010的DSL来写,我参考过的文献资料有:

1.Visualization and Modeling SDK - Domain-Specific Languages——微软的MSDN里面的,重要;

2.LearnVSXNow------如何开发VSX系列——明年我18的,重要,在MSDN里面英文不理解的,可以参考这个;

3.T4 Code Generation——代码生成用到的,还有代码生成器

具体的技术细节基本在上面的这些文档里面可以找得到,就不再这里翻译或者是讲述了。做特定领域开发,用的比较多的有Java的MetaEdit+,现在在微软发布的VMSDK上用DSL Tool的也逐渐多了起来。在VS2010里面做这个开发需要VS2010 SDK,需要建模的VMSDK,这些都可以到微软官网去下载,可能还需要MPF的源文件,这个需要到MSDN里面看说明,下载以及配置方法。

在VS2010中开发建模,用到实际应用中,而不仅仅是停留在微软的说明文档的层级上,首先需要确定一下问题:

一、开发的工具是Integrated Model还是Isolated Model?

根据应用场景,还有软件需求,所开发的工具是作为插件放在VS210之中,还是用VS2010的shell做一个独立的软件,这两个工作量有很大的不同,也和是否要生成代码,以及生成什么语言的代码有关系。一般是希望做为一个独立的软件也就是Isolated Mode模式开发的,目前,据我自己经过一个月的考证,如果进行这样的开发,比较明晰的是如果生成的代码是.Net工程的用哪一种模式,都可以,如果生成C++的工程的,只能用插件模式,也就是Integrated Model。当然,如果不想生成代码,或者说是只用建模的,这个关系到不大。这个会单独写一篇位置来说。

二、VS2010的DSL开发的技术应用实践

这个也会作为一个一篇来具体的写,具体会设计到VS DSL或者说是VMSDK中定义的属性定义要注意的事项,属性定义类型的具体实现,这个好像涉及的比较细,但是比较少,这个也是我在开发的时候碰到的比较刺手的问题,主要还是概念的理解。

三、生成C++代码

这里只讲T4模板的,现在网络上的文档多事生成.Net源代码的文章,这里要说一个比较简单的生成C++代码的方法,包括多个代码文件生成等具体的应用的实践。

做VMSDK开发到真正的应用不仅涉及了对DSL的定义,而且也涉及了VSIX的知识,还是比较琐碎的,特别是对有些概念的理解。

今天终于搭一个框架,很早以前就想写,但是不知道怎么写出来,这三点应该是我很想写的了,等有空了,会把这三条详细的说一下的。

祝大家七夕快乐!

在Visual Studio 2010中使用DSL Tool特定领域开发 开篇的更多相关文章

  1. Visual Studio 2010 中的 Web 开发

    概述 Microsoft Visual Studio 2010 为 ASP.NET Web 应用程序的开发提供非常多新的功能.这些新功能旨在帮助开发者高速方便地创建和部署质量高且功能全的 Web 应用 ...

  2. Visual Studio 2010中创建ASP.Net Web Service

    转自:http://blog.csdn.net/xinyaping/article/details/7331375 很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net ...

  3. SharePoint 2010中使用Visual Studio 2010进行方便快速的Web Part开发

    转:http://www.cnblogs.com/fatwhale/archive/2010/02/24/1672633.html 在Visual Studio 2010中,  已经集成了用于Shar ...

  4. 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序

    原文 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 在 Visual Studio 2010 中开发和部署 Windows Azure 应用程序 Jim ...

  5. (转)在 Visual Studio 2010 中创建 ASP.Net Web Service

    很多人在论坛里说,在Visual Studio 2010中不能创建“ASP.Net Web Service”这种project了,下面跟帖者云云,有的说这是因为微软已经将Web Service整合进W ...

  6. 在 Visual Studio 2010 中创建 SharePoint 2010 事件接收器

    Microsoft Visual Studio 2010 提供了一个可用于生成事件接收器的项目类型,事件接收器会在 Microsoft SharePoint 2010 网站上选择事件之前或之后执行操作 ...

  7. Visual Studio 2010中的js注释

    Visual Studio 2010中的js注释已经很强大了,但怎么才能和调用c#的方法一样容易呢?怎样才能让每个参数都有注释说明呢?底下就是想要的答案. 先上图,如图所示: 其中红色的办法为注释效果 ...

  8. 在 Visual Studio 2010 中创建 ASP.Net Web Service

    第一步:创建一个“ASP.Net Empty Web Application”项目 第二步:在项目中添加“Web Service”新项目 第一步之后,Visual Studio 2010会创建一个仅含 ...

  9. [转]Visual Studio 2010 中安装Qt 5.1

    截至目前(2013年7月12日)为止,Qt 的最高版本为Qt5.1,在该版本中已经将Qt Creator与Qt Lib集成在一个文件夹中,因此安装的时候较为方便,只需安装一个即可.因为Qt具有超强的可 ...

随机推荐

  1. shell脚本编程之for语句、if语句使用介绍

    介绍了shell脚本编程之for语句.if语句的使用方法. 上部: 面向过程: 顺序执行 选择执行: if, case 循环执行: for, while, until 一.for语句 格式:      ...

  2. SQL Server 2008 的gis函数

    居然不知道sql有gis函数,孤陋寡闻了 https://msdn.microsoft.com/zh-cn/library/bb933904.aspx   STContains(geometry 数据 ...

  3. Swift与Objective-C的对比

    WWDC 2014上苹果再次惊世骇俗的推出了新的编程语言Swift 雨燕, 这个消息会前没有半点风声的走漏.消息发布当时,会场一片惊呼,相信全球看直播的码农们当时也感觉脑袋被敲了一记闷棍吧.于是熬夜学 ...

  4. 进程(Process)和线程(Thread)的关系和区别

    Definition定义-------------Process进程是应用程序的一次运行活动:从操作系统核 心角度来说,进程是操作系统分配和调度系统内存资源.cpu时间片等资源的基本单位,为正在运行的 ...

  5. 2016 系统设计第一期 (档案一)MVC bootstrap model弹出窗

    局部代码: <!-- 按钮触发模态框 --> <div style=""> <button class="btn btn-primary&q ...

  6. XSS动态检测

    0x00 起 前一段时间,因为工作原因接触到XSS漏洞检测.前人留下的锅,是采用pyqt webkit来解析网页内容.作为Python webkit框架,相比于PhantomJS,pyqt在捕获错误, ...

  7. Solr + Hadoop = Big Data Love

    FROM:http://architects.dzone.com/articles/solr-hadoop-big-data-love 许多人使用Hadoop的开源项目来处理大数据的大数据集,因为它是 ...

  8. mybatis--面向接口编程

    如果使用hiberante作为dao层,常用的方式是:定义一个dao层接口包(com.dao.service)然后在定义一个dao层接口实现包(com.dao.service.impl),这样定义结构 ...

  9. [转载]JQuery的Ajax跨域请求的解决方案

    今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuer ...

  10. ural 1066 uva 1555

    好吧  竟然因为编译器的问题不过  到底有什么区别 ???? 可以推出公式Hi = (i-1)H2 +(i-1)(i-2)-(i-2)*H1  因为所有的Hi都要大于零 Hn要最小 即存在Hi=0   ...