Configuration file transformations for specific machines
swinghouse
Posts: 120 Bronze 2
Configuration file transforms work beautifully with environments in Deployment Management, but is there any support for machine specific transforms?
The scenario I'm thinking of is this:
What I've been trying to do is to define the connection string transform in Web.Machine1.config and Web.Machine2.config, respectively. Alas, DM doesn't seem to pick up these. (The same transform rules in environment specific config files do get processed by DM.)
The scenario I'm thinking of is this:
-
Machine1 and Machine2 both belong to Environment1. One or more settings need to be unique for each machine, for instance the database connection string.
What I've been trying to do is to define the connection string transform in Web.Machine1.config and Web.Machine2.config, respectively. Alas, DM doesn't seem to pick up these. (The same transform rules in environment specific config files do get processed by DM.)
Comments
The web config transforms work only for Environments. You could try specifying the connection strings in a Deployment Manager variable, and using a powershell deployment script to apply a further transformation of the web.config. The variable could then be customised per machine as you need.
Actually, it seems nicer to work this way, as then the package does not need to know what environments you want to deploy it to, meaning you can add/change environments and configuration without needing to build a new package.
This requires a powershell script to modify the web.config as appropriate. I found an example of doing that on StackOverflow: http://stackoverflow.com/questions/1172 ... t-escaping
I expect later we will have more flexibility in terms of deployment steps, and that Web Config Transform step might be more configurable.
Thanks,
Justin
Developer
Redgate Software Ltd
Yes, you assumed correctly - same project, different machines.
I'll look closer into your suggested solution in a while. It certainly looks doable!
Thanks for the help!
/Mattias
For example, if your web.config had the following connection string definition (example from MSDN): And you defined a Deployment Manager variable with the name "NorthwindConnectionString" and the value "Data Source=.;Initial Catalog=Northwind;Persist Security Info=True;User ID=sa;Password=my_very_secure_password", the connection string in the web.config would be replaced. Because this uses a normal deployment variable, you can define different values for different Environments, Machines, or even Steps within a project.
This also works for appSettings in the app.config: You can replace the value on deployment by adding a deployment variable named "SettingName" with the new value.
(some documentation for this feature can be found here)
Redgate Software
Even though my question was specifically about the integration with .config transforms, it was good to read your succinct overview of the other options available in Deployment Manager.
Thanks!
/Mattias