Transforming web.config before publishing to server with WebDeploy (TransformXml)

To Ka
To Ka used Ask the Experts™
on
I have a WebAPI / EntityFramework project that I am working on and I publish updates to the server quite often (using WebDeploy).

My setup uses custom defaultConnectionFactory in order to create connection string based on certain criteria.

Every time I push an update to sever, an new connection string is added to my web.config file:
name: MyProject.Lib.Data.DataContext
value: MyProject.Lib.Data.DataContext_ConnectionString

I found a solution (http://stackoverflow.com/a/3622821/573208) that looks like exactly what I am looking for but I could not make it work.

I added this line at the end of my project file
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

Open in new window

right before </Project> closing tag. But could not go any more further.

The article states that I need to
place <TransformXml Source="web.config" Transform="web.release.config" Destination="$(DeployPath)\web.config" /> in the right item group
and then
make sure that target gets fired prior to the call to Package

That's where I got confused:
- Where should I place the <TransformXml ... /> section and how to I find out which is the "the right ItemGroup"
- How do I "make sure that target gets fired prior to the call to Package"

Any help would be much appreciated
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
All-around developer
Commented:
What we do  is create the 2 config files and use something like this to change the variable information in each.  This way we don't actually have to create a full config for each mode.

We use Paypal as a payment processor and for our debug mode, we use the "sandbox" url.
Our master has the value setup like this to work with our dev environment:
<add key="PAYFLOW_HOST" value="pilot-payflowpro.paypal.com" />

Open in new window


In our Release config this code changes the value:
<add key="PAYFLOW_HOST" value="payflowpro.paypal.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Open in new window


In the debug config it looks like this:
<add key="PAYFLOW_HOST" value="pilot-payflowpro.paypal.com" xdt:Transform="Replace" xdt:Locator="Match(key)"/>

Open in new window

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial