Click here to Skip to main content
15,120,747 members
Articles / Programming Languages / XML
Technical Blog
Posted 28 Sep 2010

Tagged as

Stats

25.8K views
4 bookmarked

Config Transformation Tool: Using XDT Transformation

Rate me:
Please Sign up or sign in to vote.
5.00/5 (3 votes)
29 Jun 2017Ms-PL1 min read
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.

This article was originally posted at http://outcoldman.ru/en/blog/show/223

License

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

Share

About the Author

outcoldman
Software Developer (Senior)
United States United States
No Biography provided

Comments and Discussions

 
QuestionCodeplex is shutting down. Pin
E. Scott McFadden3-Jul-17 4:58
professionalE. Scott McFadden3-Jul-17 4:58 
First, nice tool.

However, you should consider moving your code to a git repo and updating your article since codeplex is going to shutdown at the end of the year.

Thanks for posting! Smile | :)
QuestionIs it possible to easily use the tool inside C# projects? Pin
rigame19-Apr-12 5:16
Memberrigame19-Apr-12 5:16 
AnswerRe: Is it possible to easily use the tool inside C# projects? Pin
outcoldman19-Apr-12 8:20
Memberoutcoldman19-Apr-12 8:20 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.