In my previous post i had outlined my first attempt at creating solution templates using the Visual Studio vstemplates technique. I have now gone one step further and built an add-in that allows the user to apply solution wide settings to all the projects. The settings that can be specified are as follows



  • RootNamespace : Namespace prefix upto and not including the solution. This usually follows the format Company.Product. ProductGroup. (e.g) Microsoft.IntegrationPlatform.Services.
  • Solution Name: Taken from the active solution, but can be changed to anything needed – for example CustomerService. The reason this is provided is because some teams like to keep the entire namespace in the solution name but while generating assemblies, the prefixes could be superfluous
  • SolutionNamespace: Namespace comprising the rootnamespace and the solution. (e.g) Microsoft.IntegrationPlatform.Services.CustomerService where CustomerService is the functionality provided by the components of the solution.
  • Application Name: This is the Biztalk application name to be applied to the biztalk projects. Sometimes this is the same as the solution name but need not necessarily be so.
  • Key File: This allows the user to select an existing key file or to create a key file and have it applied to all the projects including the non biztalk projects (which is needed to allow them to be GACed). 

Acknowledgements
The strong naming functionality is borrowed from the work done by Jon Flanders and Carlos Medina . In Jons tool you can generate and apply a strong name to a biztalk project on the fly and with Carlos’ enhancements,you can generate and apply the strong name to all projects, or if you already have a strong named project you can copy those settings across to other projects. You can also apply the ApplicationName to the active configuration.

In this tool, the extra functionality is that you can
(1) apply the application Name to ALL configurations – deployment/development/debug/release etc (i usually add in the debug and release configurations to my biztalk projects to make it easy for my automated build scripts to move between biztalk and non-biztalk projects and
(2) choose a strong name file from anywhere on the machine and opt to use a hardcoded path to the key file or a relative path. At this time the relative path can only be calculated from the solution root so the program copies the snk file to the solution root and calculates it from there. Technically it is possible to calculate relative paths to anywhere in the source tree, but right now the code does not support this.


You can download the add-in from here.


As always, your feedback will be appreciated and welcome to help make this tool better. I am looking at trying out some wizards next which will be more flexible and allow more settings and options to be specified.