Full Disclosure: I am the creator of the below mentioned project.
You can achieve the desired result using the IWizard
implementation I created called GlobalParams
. It makes the information from the solution template level available to the child templates that also run the wizard by prefixing ALL solution level parameters with the word global and adding them to the parameters of the child template.
If you used GlobalParams with the above multi-project template and the user entered "StarterKit", the following would be true:
- StarterKit.Common Could access
- $safeprojectname$ = StarterKit.Common
- $globalsafeprojectname$ = StarterKit
- $globalguid1$ = E8C8A064601844439909D6C33AB90CB3
- $globalguid2$ = 020DB5ABF76040C7BDA19EAC54DFE3D8
- $globalguid3$ = 8392FB760F754C0AB87778845CC28B6D
- $globalguid4$ = 13E07D43F523467587296B2C386DEE50
- StarterKit.DAL
- $safeprojectname$ = StarterKit.DAL
- $globalsafeprojectname$ = StarterKit
- $globalguid1$ = E8C8A064601844439909D6C33AB90CB3
- $globalguid2$ = 020DB5ABF76040C7BDA19EAC54DFE3D8
- $globalguid3$ = 8392FB760F754C0AB87778845CC28B6D
- $globalguid4$ = 13E07D43F523467587296B2C386DEE50
- StarterKit.BL
- $safeprojectname$ = StarterKit.BL
- $globalsafeprojectname$ = StarterKit
- $globalguid1$ = E8C8A064601844439909D6C33AB90CB3
- $globalguid2$ = 020DB5ABF76040C7BDA19EAC54DFE3D8
- $globalguid3$ = 8392FB760F754C0AB87778845CC28B6D
- $globalguid4$ = 13E07D43F523467587296B2C386DEE50
- StarterKit.Web
- $safeprojectname$ = StarterKit.Web
- $globalsafeprojectname$ = StarterKit
- $globalguid1$ = E8C8A064601844439909D6C33AB90CB3
- $globalguid2$ = 020DB5ABF76040C7BDA19EAC54DFE3D8
- $globalguid3$ = 8392FB760F754C0AB87778845CC28B6D
- $globalguid4$ = 13E07D43F523467587296B2C386DEE50
With GlobalParams
you have access to 100 Guid
s with the global prefix that are the same across child templates. So the StarterKit.Common project can be given the value of "$globalguid1$" as the project id with StarterKit.DAL and StarterKit.BL building project references to StarterKit.Common using "$globalsafeprojectname$.Common" as the name of the project being referenced and "$globalguid1$" as the id of the project being referenced. I think you can see how it will work for building the references between the rest of the projects.