I was helping Eugenio write his first guidance package. He asked me to show him a few things "so he did not have to read the documentation" J. He created a project template by copying one of the existing ones, rebuilt the guidance package solution (which registered the package), and tried it. His template did not show up?! Why? Because he did not create a reference. I gave him a quick overview of what reference are for, which I have summarized below .


GAX shows recipes and templates only if it has references for/to them (so in reality, it shows references to templates and recipes). If a recipe is defined as "bound" (an attribute of the Recipe element in the config file), you need to "attach" that recipes to a solution element before it shows up. The easiest way to attach a reference to an element is to make it a side effect of unfolding a VS template (by using the RecipeReference element in the WizardData). You can also do it the hard way, using GAX services.


If you define a recipe as unbound, you have to create a reference instance yourself. This is because the instance has to implement a method that GAX calls to ask the reference if it wants to be shown on the current selection. You can also create unbound references to templates (this is what Eugenio forgot to do).


We can go into details of creating references (if we need to) in other postings. Right now, however, I would like to get back to the main point I want to make; nothing shows up unless there is a reference. This is by design. One of the key design goals of GAT was to enable guidance (recipes and templates) "only where it applies and only when it applies". References are the mechanism to achieve this goal.


-- Wojtek