Denis Gladkikh

outcoldman

My personal blog about software development

  • 26 Aug 2010
  • ASP.NET 4, XDT, XML-Document-Transform, Config Transformation Tool
  • 0 comments

XDT Transformation is a new feature of ASP.NET 4.0 named Web.Config Transformation.

Scott Guthrie: "In most real-world deployment scenarios, the web.config file you use for development is different than the one you use for production deployment. Typically you want to change environment settings like database connection-strings, making sure debug is turned off, and enabling custom errors so that end-users (and hackers) don’t see the internals of your application."

But the chief problem of this feature - is working only with web.config files.

I investigated this problem, and wrote Config Transformation Tool, which gives opportunity to use XDT Transformation Syntax like at Deployment Web Application Project for any files. This tool is very easy, it just run msbuild task, which do this transformation.

You just need to set source file, transformation file and destination file at arguments and run this tool. You can use it for app.config files for WinForms, WPF or Console projects and any other files. You can set this transformation task with nAnt or just set it in Post-Build Event for Project.

Below little example of using:

<?xml version="1.0"?>
 <configuration>
     <custom>
        <groups>
            <group name="TestGroup1">
                <values>
                    <value key="Test1" value="True" />
                    <value key="Test2" value="600" />
                </values>
            </group>
             <group name="TestGroup2">
                <values>
                    <value key="Test3" value="True" />
                </values>
            </group>
         </groups>
    </custom>
</configuration>

transform.config file content:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <custom>
        <groups>
            <group name="TestGroup1">
                <values>
                    <value key="Test2" value="601" xdt:Transform="Replace"  xdt:Locator="Match(key)" />
                </values>
            </group>
        </groups>
    </custom>
</configuration>

Run tool from command line with arguments

ctt.exe s:source.config t:transform.config d:destination.config

Config Transformation Tool In Action

Tool will generate us destination.config file with content:

<?xml version="1.0"?>
 <configuration>
     <custom>
        <groups>
            <group name="TestGroup1">
                <values>
                    <value key="Test1" value="True" />
                    <value key="Test2" value="601" />
                </values>
            </group>
             <group name="TestGroup2">
                <values>
                    <value key="Test3" value="True" />
                </values>
            </group>
         </groups>
    </custom>
</configuration>

To get more details about transform file syntax go to http://msdn.microsoft.com/en-us/library/dd465326.aspx

Project's URL at CodePlex http://ctt.codeplex.com/.

Current version Config Transformation Tool 1.0.3890.17440.

Comments