Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Languages / XML

Config Transformation Tool: Using XDT Transformation

5.00/5 (3 votes)
29 Jun 2017Ms-PL1 min read 29.2K  
Config Transformation Tool: Using XDT Transformation

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 the opportunity to use XDT Transformation Syntax like at Deployment Web Application Project for any files. This tool is very easy, it just runs msbuild task, which does 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 is a little example of using:

XML
<?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
<?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 destination.config file with content for us:

XML
<?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 MSDN.

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

Current version Config Transformation Tool 1.0.3890.17440.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)