本来是很想写关于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. Delphi摄像头操作

    /*Title:Delphi摄像头操作 *Author:Insun *Blog:http://yxmhero1989.blog.163.com *From:www.4safer.com */ 为了笔耕 ...

  2. 自学JAVA总结

    2.在定义常量的时候C语言中定义为const而JAVA中为final3.在JAVA声明成员变量的时候,使用static来定义.4.在JAVA中的boolean类型只包括true和false,但是在C中 ...

  3. pdf增加水印

    /// <summary> /// 为PDF添加水印或背景图片 /// </summary> /// <param name="strSourceFilePat ...

  4. Cocos2dx隐藏iOS7状态栏】通过添加Plist Key隐藏iOS7状态栏

    本站文章均为李华明Himi原创,转载务必在明显处注明:(作者新浪微博:@李华明Himi)  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/%e9%9a% ...

  5. vim查看函数原型以及关闭窗口

    问题描述:         vim中查看函数原型,以及关闭vim窗口 问题解决:      (1)查看函数原型            使用Shift+K可以查看用户手册      (2)自定义函数   ...

  6. [转载]c# winform 获取当前程序运行根目录

    // 获取程序的基目录. System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径. System.Diagnostics.Process.G ...

  7. API断点大全

    1.限制程序功能函数 EnableMenuItem 允许.禁止或变灰指定的菜单条目EnableWindow 允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰) 2.对话框函数 CreateDia ...

  8. Linux rm命令

    rm可以用来删除文件和文件夹.  rm --help Usage: rm [OPTION]... FILE... Remove (unlink) the FILE(s).   -f, --force ...

  9. 如何在eclipse里使用git

    新版都自带git插件了.在项目上右键,选team,选share project,再选择git就可以了. 如果在本地使用git比较简单.如果要多人共享的使用git,那么需要专门的服务器,并提供ssh,这 ...

  10. POJ3283+字典树

    简单的字典树 /* 字典树 构造字典树.注意初始化! */ #include<stdio.h> #include<string.h> #include<stdlib.h& ...