20 July 2007
Packaging and Building Software Factories, with Visual Studio and Team Foundations Server
At the request of EPG, Microsoft, Jezz Santos (Microsoft MCS) has created, along with the product group, a two part short whitepaper series on ‘Packaging and Building Software Factories, with Visual Studio and Team Foundations Server’. The first paper will be published shortly under MSDN. The second will be published not long after. Here is a (draft) preview of the first paper. Stay tuned…
Creating Software factories today on the Microsoft platform typically involves the combination of one or more Guidance Automation Toolkit (GAT) packages, and one or more Domain Specific Language (DSL) packages, often combined with additional components and customizations of Visual Studio Extensibility (VSX) such as tool-windows, editors, commands, services etc.
Ideally, the basic deployment of a single software factory would be within a single installer (MSI) containing all guidance packages, all DSL’s and all extensibility code and components. Although each authoring toolkit (GAT and DSL) offers easy means of creating individual setup projects, there is no integrated way of combining multiple GAT and DSL packages into one setup project, combining the required information to deploy these combined packages as a single factory deliverable.
GAT and the DSL Toolkit both require intermediate parsing/compilation/registration steps before design-time changes take effect in the packages they produce at runtime. In the case of GAT, a special registration process parses a package XML manifest file, and compiles and registers the recipes and templates to be used by the Guidance Automation eXtensions (GAX) runtime. In the case of a DSL, the DSL designer requires transformation of its text templates to source code files which are then compiled into the package and registered with Visual Studio for runtime. Both these quite unique intermediate ‘pre-compilation’ steps require deliberate and manual intervention steps from the developers creating these packages. But neither is enforced as part of the check-in or the build processes. In team development and build scenarios, these pre-compilation steps must be explicitly invoked and verified to ensure that design-time changes result in valid packages that don’t break builds, and that can be deployed.
This article delves into the various issues facing those building and deploying software factories today in team environments. The article provides practical guidance for packaging a single software factory, and automating the build process of GAT and DSL packages for team build scenarios with Team Foundation Server.