New version of DSL Tools now available

See the DSL Tools web page for details on the latest preview of the DSL Tools.  Here’s what the link says:

About the Latest CTP
The latest CTP (in the June CTP of Visual Studio 2005 SDK) brings the Domain-Specific Language tools much closer to their final form for the release of the first version. The APIs, code generators and new Domain-Specific Language definition format are close to their final form. However, the designer for editing Domain-Specific Language definitions, which replaces the Domain Model Designer, has missing features and bugs. So, if you are prepared to edit a Domain-Specific Language definition directly in XML or using the Domain-Specific Language definition designer, but being careful to take account of the documented known issues, then this CTP will give you access to all the improvements and new features detailed below. Otherwise you may continue to use an earlier CTP of DSL Tools, such as the CTP included in the April release of the Visual Studio SDK, and rely upon a more stable and documented authoring experience.

New features of this release include:

  • Simplified and cleaner APIs.
  • A new Domain-Specific Language definition (.dsl) format which replaces the .dsldd and .dsldmd formats. As a result of this change, you can define more behaviors and customize the properties grid and the model explorer without writing custom code. The new format also supports a richer, more flexible and less constraining mapping between notation and domain model aspects. In addition the format provides numerous flags that indicate places where custom coded behavior is required.
  • A preview of the new Domain-Specific Language designer, which you can use to edit domain-specific language definitions. Some features in the designer have not yet been implemented. For more information, see the known issues document
  • A new set of code generators. Among other improvements, these generators produce code that is easier to customize by hand.
  • A new Domain-Specific Language Designer project template, which has an improved wizard UI and which produces a solution that has an improved project structure.
  • Support for ports notation.
  • Support for swimlane notation.
  • A new approach to the serialization of models in XML, where:

    • The XML format used is more readable, with tags that match the domain concepts.
    • You can make simple customizations to the XML format in a Domain-Specific Language definition, and you can plug custom code into the generated serialization code to handle more complex customizations.
    • The XML reader tolerates elements that are missing or that the reader does not understand, and the error checking is considerably improved.
    • Model and diagram information are saved in separate files, so that you can build designers for viewing existing XML formats.

  • Various performance improvements, in particular to model loading and the text template transformation engine.
  • Updated and extended documentation, including more documentation of the APIs and new walkthroughs to match the new experience.

Comments (8)

  1. Dave Comer says:

    When will the download be made avaialable? I don’t see it under the VSIP downloads yet. Hot to trot to try the new download!


  2. It’s there now in the June 2006 CTP – follow the links.  It’s some way down the page.

    — Steve Cook

  3. Dave Comer says:


    I downloaded the June CTP and started working my way through the getting started walkthrough. When I came o the walkthrough topic "Defining the Domain-Specific Language", more specifically the section on "To update the domain-specific language definition" I found that the help file and the wizard generated design are way out of sync. For instance, in step 5 (Family tree walkthrough, snippet repeated below here to be sure) the connector property labels and their position are on opposite sides of the domain relationship.

    Now, mind you I don’t mean to complain, just trying to get a grasp on the technology and looking for a good example. Can you recommend a better example?



    Repeated text of the Walkthrough Problem Area….

    "Each relationship has a pair of roles, representing the properties of the two ends of each link. Change the name of the target role of the FamilyHasPeople as follows:

    Select the connector between FamilyHasPeople and Person; this represents the target role of the relationship.

    In the Properties window, change the role’s Name from Element to FamilyMember. Verify that the DisplayName also changes automatically; if not, change it manually. This name appears in the Explorer window when using the language, and is also used in programming custom code and templates.

    Change the property name from ExampleModel to Family. This is the name of the property used in programming custom code or templates, to navigate from a Person-instance to its Family."

  4. Dave

    The text you cite is in fact correct, although there is a mistake earlier in step 4, where it says "Change the name of the ExampleRelationship domain relationship" – that should read "Change the name of the ModelHasElements domain relationship".  I will post a bug about that.

    When you have carried out the steps listed, for the correct relationship, you should have a domain class Family, related via an embedding FamilyHasPeople to a domain class Person.  The source (left) role should have name Family (this is the name of the role from the perspective of the relationship itself) and PropertyName FamilyMembers (this is the name of the property of the Family class, which will be a collection of Person objects).

    You’ll find a more complete response to questions if you go to our forum at, where you’ll find a wealth of discussion and help, and you’ll get more people helping you than here.

  5. Dave Comer says:


    Thanks for your quick follow up, tips, and link. Offhand, I think the concept of DSL tools is a solid one. I attended Jochen’s talk at PDC ’05 and had a chance to speak with Jochen before hand. It appears that the journey has been a long one and is now beginning to stabilize. Do you have any idea when (not sure if you can say) DSL tools will be productized and stable enough for production use? I ask because I have been tasked with the job of understanding the tool for potential use in later projects.

  6. Dave

    We’re expecting to release V1 of DSL Tools as part of Version 3 of the Visual Studio 2005 SDK, which is scheduled for late August.

  7. Davd Comer says:


    Promise not to pester you more, but FYI, I’ve been keeping notes on corrections to the FamilyTree walk through. I posted a message in the forms, but I’m not sure the proper person will see it. If someone in the DSL tools group is interested, I’d be happy to share the notes with them to improve the documentation. I’ll probably do that for the remainder of the documentation as I work through it.


  8. Dave, thanks very much, posting to the forum is the best approach.

    — Steve