Jean-Marc published a nice post on how to enable a DSL to MEF extensios. There's a followup post for those who migrated from VS2005 and missing the magical InternalsVisibleTo attribute in their AssemblyInfo.cs.
For more info on DSL tools see this code gallery page: http://code.msdn.microsoft.com/vsvmsdk
In this post: 1) General overview of the way the toolbox items work in DSL tools for VS2010 2) Toolbox related Changes from VS2008 to VS2010 3) Customization of static toolbox items - how to grouped model elements into single toolbox item In VS 2010 we change the way we manage toolbox items from being set explicitly during package initialization to being partially set(*) before the package has been created and initialized. The toolbox items that are set this way called static toolbox items (vs....
One of the new features for DSL in VS2010 is DSL libraries, in this post I will explain how to use the new feature. Prerequisites: VS SDK 2010 Beta2 and higher + DSL SDK 2010 Beta2 and higher. DslLibrary is a DSL that is used as a library – you can extended it or just use it with you DslLibrary/DSL. In order to start creating DslLibraries: 1. Start VS and then File->New->Project 2. Find the Domain-Specific Language Designer (under Other Project Type->Extensibility) 3. In the...
As of yesterday, you can download the new version of the DSL SDK.
We fixed some bugs and we added some really cool features such as better templates for WPF and Winforms based designers, T4 code generation at build time, domain model extensibility (you can even extend the Dsl designer itself), and DslLibraries and much more. For the full list see Jean-Marc's post.
There's a known issue with debugging Dsl designers using F5 - the toolbox items won't appear in the exp hive. In order to work around this (until the RC) you will have to run using CTRL+F5 (without...
Jean-Marc has released another sample over the weekend:
Domain Model Extensibility, here is a quote from his post:
"The sample presents a DSL to explain the architecture of a multi-Tiered application. Each tier is made of components, which have ports. Connections are made between output ports and input ports. What is new is that a Domain Model Extension will add a “Security Extension” thus providing to the toolbox new items (an Audit Log), to a Tier new decorators, to Ports three new Domain properties related to the HTTP security, new validation methods, and new rules. I’m pretty sure you’ll like this...
The first DSL SDK 2010 Beta1 was just added by Jean-Marc and it demonstrates the usage of our new feature - ModelBus, used for model referencing.
The code and the documentation is available here: http://code.msdn.microsoft.com/DslTools
Side note: check out my first feature as MS employee - the ModelBus Picker - the WPF-based reference picker that pops when you click on the ellipsis for ModelBusReference typed properties ;-)
Feedback is appreciated
Jean-Marc has just announced about our release of DSL SDK for VS2010 Beta1 !
In that posts he covers about the new features we've added, sample and more!
We have a new code gallary page that is worth checking out: http://code.msdn.microsoft.com/DslTools (I planning to write a sample regarind our new WPF databinding features in the next week or two). You can download the SDK here.
Simple types such as string's and int's are nice but if you really want to leverage you DSL and use you types you need a couple of things:
1) You need to add it to the DSL designer
2) You need to serialize it somehow
The first part is not very hard there two ways to do it:
1) Edit you DslDefinition.dsl in xml editor – look for //Types/ExternalType and add one of your owns (don’t forget to reference the assembly)2) You can use DSL Explorer window and add it from there – just click on the root node (you language) and then “Add External Type”
A colleague at work refered me to this post on how to add a menu to a DSL.
Top level summery of the steps needed:
Step#1: Modify Commands.vsct
Step#2: Modify Package version
Step #3: Search for "your" CommandSet class
Step#4: Customize your specific CommandSet
Step #5 : Transform Templates + Test It
Very cool !