We released the DSL SDK for Visual Studio Beta2 this morning

I’m a bit late to announce it, but only now do I find the time to blog: this morning, we released the DSL SDK for Visual Studio Beta2. It is available from Visual Studio 2010 DSL SDK Beta2, and, as for the Beta1, you’ll need to install the Visual Studio 2010 SDK Beta 2 beforehand. The documentation and sample will be available soon from the DSL SDK hone page on the code Gallery (http://code.msdn.microsoft.com/DslTools),

Here are the new features with respect to DSL Tools for Visual Studio 2008 SP1, but I’ve also highlighted that is new in Beta2 with respect to the DSL SDK for Visual Studio 2010 Beta1:


In Visual Studio 2010, the F5 experience is improved, and deployment of a DSL considerably simplified, exploiting the extension manager in the Visual Studio platform and the new facilities in the Visual Studio SDK top create a VSIX package which is a simple zip archive that unpacks itself into the User’s extensions folder.

Visual Studio 2010 Beta2 also brings 12 new DSL features:

  1. Different models can now interact with each other, (and with Visual Studio Team System Architecture UML designers), using the ModelBus. A DSL author can choose to generate a ModelBus adapter, that will expose his model to other models or tools.
  2. Databinding support has been added, allowing Windows.Forms and WPF form-based designers to be created by binding a standard winform or WPF-based UI directly to DSL models. This enables developers to quickly create designers such as the .ResX or .settings designers in Visual Studio. In Beta2 we improved the form-based DSL templates proposed in Beta1.
  3. It is now possible to have completely or partially read only models, which can be used for instance by reviewing and commenting tools.
  4. A number of UI enhancements have been added, including :
    1. moveable decorator for connectors,
    2. sticky toolbox items (when the user double-clicks on an item in the toolbox,it’s not necessary to return to the toolbox for repeated applications of the tool),
    3. quick navigation and editing of compartments with the keyboard
    4. Copy and paste of diagram elements to images (in Bitmap and .wmf/emf)
    5. Copy and paste of model elements in or between diagrams. In Beta2, this was also applied to the Dsl Designer so that you can easily refactor your models!
  5. The notion of DslLibrary has been introduced. This enables factorizing and componentizing DSLs (for instance having several domain models have the same base-domain class). In Beta2, here is a new Dsl template for this and we can dynamically import libraries into a language during language authoring time. The authoring experience includes: loading libraries through DSL explorer, unload libraries through DSL explorer, validation warnings for circular dependencies between DSL libraries and language, validation warnings when we detect broken imports
  6. The Domain Model Extensibility enables third parties to extend a DSL after deployment
  7. The DslDesigner itself can be extended both using the Domain Model Extensibility, and using a simpler MEF extensibilty. You can thus add domain properties, rules, but also now commands, gestures, validation to the Dsl designer if you wish (New in Beta2)
  8. T4 is now independant on the DSL Tools (you have T4 in Visual Studio and do not need to install the DSL Tools any longer to benefit from it). However, the DslSdk contains msbuild rules and tasks for T4 code-generation at build time

A migration tool is included to help DSL authors migrate their existing DSLs from Visual Studio 2008 and the associated VSSDK. (For more details, see the documentation and a video)


In the next few weeks, we’ll add new Beta2 samples to the DSL SDK home page and I’ll blog about the highlighted features.

Comments (1)

  1. ippous says:


    I have made a lot of test with the new release; and  differences are very usefull.

    I have just a problem. I can’t find a code sample where we can pass parameters from a dsl model to a T4 template.

    All the old methods doesn’t work.

    I have tried the directives "Property", and "Parameter"; There is nothing to do.  Even if the variable is declared in the T4 template; it’s already set to null.

    I’m a little bit disappointed.

    Have you an idea ?

    Best Regards.