COB.NET R2 Program - 02 June 2014 Guidance Automation Toolkit VISUG 09/08/2006 Jelle Druyts
Agenda Introduction Wizards (Recipes) More than just wizards Continuous Guidance
Guidance Automation Toolkit Introduction
Have you ever needed... A 40-page document full of guidelines Architectural layers Solution/project structure Namespaces, class names, method names,... Best practices Step-by-step instructions Visual Studio customizations Custom actions Custom Add New items (classes, projects) Code generation Empty quick-start solutions for development teams Home > Introduction
Visual Studio SDK Visual Studio has an object model Call the Visual Studio APIs directly EnvDTE.dll and EnvDTE80.dll Powerful Entire Visual Studio object model is exposed Difficult Registering custom packages in Visual Studio COM interop with EnvDTE object model Home > Introduction
Guidance Automation Toolkit Guidance Automation Making reusable code and pattern assets directly available in Visual Studio 2005 Integrating reusable code into applications Guiding developers through complex procedures Uses Visual Studio SDK behind the scenes Built and used by Microsoft Patterns & Practices Web Service Software Factory Smart Client Software Factory Mobile Client Software Factory Latest release: June 2006 CTP Home > Introduction
GAX & GAT Home > Introduction
Guidance Automation Toolkit Wizards (Recipes)
Guidance Automation Packages A Guidance Package consists of Visual Studio Templates Provide integration with Visual Studio Create New Project/Item dialog box Create Solutions, Projects, Project Items,... Defined in.vstemplate files Guidance Automation Recipes Automated activities that define a series of instructions Abstract an action that the developer would need to do manually E.g. create projects, add references,... Defined in an xml file Link between both: Templates refer to Recipes Home > Wizards (Recipes)
Visual Studio Templates Home > Wizards (Recipes) <VSTemplate Version="2.0" Type="ProjectGroup" xmlns=" Application Block Guidance Package that creates a new Application Block. CSharp ApplicationBlock.ico Projects\Runtime\Runtime.vstemplate Microsoft.Practices.RecipeFramework.VisualStudio, Version= , Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate <Template xmlns=" SchemaVersion="1.0" Recipe="CreateApplicationBlock">
Guidance Automation Recipes Home > Wizards (Recipes) <GuidancePackage xmlns=" Name="JelleDruyts.EnterpriseLibraryGuidance" Caption="Enterprise Library Guidance" Description="Provides guidance around the creation of Application Blocks" Guid="2cac5b9c-a04f-4a49-8a56-3ee5d63bd83f" SchemaVersion="1.0"> Create a new Enterprise Library Application Block <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters. CodeIdentifierStringConverter, Microsoft.Practices.RecipeFramework.Library" /> <Converter Type="Microsoft.Practices.RecipeFramework.Library.Converters. NamespaceStringConverter, Microsoft.Practices.RecipeFramework.Library" /> Application Block Information <Field ValueName="ApplicationBlockName" Label="Application Block Name" InvalidValueMessage="Must be a valid.NET identifier." /> <Field ValueName="ApplicationBlockNamespace" Label="Namespace" InvalidValueMessage="Must be a valid.NET namespace identifier." />
Guidance Package Wizard Home > Wizards (Recipes)
Guidance Automation Toolkit More than just wizards...
Actions Executed after a recipe is unfolded E.g. add project references, generate classes,... Regular.NET classes (pre-built & custom) Strongly-typed input and output arguments Come from the recipe or another action Typically use EnvDTE Home > More than just wizards
Value Providers Provide values for recipe arguments, optionally dependant of other recipe arguments Define project names, post-build commands,... Retrieve currently selected project, file,... Regular.NET classes (pre-built & custom) Home > More than just wizards <ValueProvider Type="Evaluator" Expression="$(ApplicationBlockNamespace).$(ApplicationBlockName)">
Code Generation T4 templates (text templates transformation toolkit) E.g. generate data access component from database,... ASP.NET-like syntax with full capabilities of.NET Home > More than just wizards using System; using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.Configuration.Design; namespace { internal sealed class : ConfigurationNode { }
Guidance Automation Toolkit Continuous Guidance
Recipes stay alive The show isnt over when the initial solution has been created Recipes associated with project items Unbound / bound (to a specific item) / dynamic E.g. right-click data access project, choose Add Data Access Component Adding more templates New projects, e.g. data access project New project items, e.g. data access component Uses same mechanisms (wizards, actions,...) Home > Continuous Guidance
Guidance Navigator Separate window listing Overview information All the available recipes History of executed recipes Links to online help, documentation,... Home > Continuous Guidance
Questions?