SlowCheetah - XML Transforms


This package enables you to transform your app.config or any other XML file based on the build configuration. It also adds additional tooling to help you create XML transforms.. Written by: Sayed Ibrahim Hashimi, Chuck England and Bill Hiebert

(138) Review
Visual Studio
2013, 2012, 2010
Download (208,222)
E-mail Twitter Digg Facebook
Add to favorites
Reviews (138)
Q and A (254)
Sign in to write a review
Sort by:

by Dave_MEC | January 19 2016

This is an extension I can't live without. We use this in everyone of our applications. It should be added as part of Visual Studio going forward.

by jmelllo | November 19 2015

by DragonOfId | November 12 2015

This extension has made configuring console programs for multiple environments SO much easier. I have no idea why this functionality isn't native in VS!

by George Birbilis | November 05 2015

see for VS2015

by the real Tim Partridge | October 23 2015

Works as advertised. Downloaded, installed, restarted Visual Studio. Done

by Toomas Talviste | September 23 2015

by Kevin Landymore | September 15 2015

Doesn't work with a build controller. Useless for me sadly, these things should work "out of the box".

by Richard M Lee | September 06 2015

Invaluable! A feature that should definitely be native to visual studio.

by SabbirSpider | August 14 2015

Great Package.It reduces my lot of manual task for my windows application

by sukhdeep.singh1 | July 31 2015

Great plugin, a life saver :)

by ronnotel | July 18 2015

I've been coding large financial trading frameworks in VS/C# since .NET 1.1 days (12/13 years). From this perspective, I can affirmatively state that Slow Cheetah is by far the most productive package that is not currently integrated into the VS tool. I'm walking through a major rollout now involving five different staging environments and over twenty different server configs. Without Slow Cheetah, the other 35 people in the deployment team waiting on my builds would be left high and dry while I tried to manage the configs by hand. VS management - what the *hell* are you thinking? Integrate!

by MGSman123 | June 30 2015

Excellent extension! Definitely essential to my VS toolbelt going forward. Works like a charm in VS2015 too. Just needed to tweak the vsextension xml inside the package :)

by Blue Ajaz | June 03 2015

by dittodhole | April 23 2015

by Tim Long | April 20 2015

5 stars, a genuinely useful tool whenever you need different connection strings, diagnostic logging (etc, etc) configuration for release vs. debug builds.

by MSreenath | March 17 2015

Hi Ibrahim,

Thanks for writing this great tool. I have a question regarding this tool.

Question 1:

How this tool will help if I am creating ONE setup project (msi project) for all my environments and have multiple configuration files ? How can I build and deploy in this case.

As far as I can see this tool works great if you are doing file copy deployment. It just does not make sense to create setup file (read msi) for each environment, if that route I am taking for this

Question 2:

I have 5 different applications (Three Console Applications, Two Windows Service and Two Web)

Can I keep a one master config file and update all these five applications without copying same settings to app.staging.confing likewise to all applications.

Again, it takes lot of time and create this tool, I myself struggled create such tool but it is far from the level you have reached.

Please let me know. I am waiting for your response.


by jhjhkl758 | March 12 2015


by Cosmin Vana | January 19 2015

by Victor Lindsey | January 16 2015

I really like this tool for Visual Studio (both 2010 and 2013), and cannot understand Microsoft's reluctance to adopt this as a standard feature for all future versions of the IDE.

I found that for me, using the VSIXinstaller for each edition of Visual Studio I'm using, worked well to get it installed. And I have to make sure that custom XML-styled configuration files are marked with "Copy always" or "Copy if newer".

by 程湘之間 | January 06 2015

It's a very good add-on for Visual Studio.
Maybe making a formal part of Visual Studio will be a good idea.

1 - 20 of 138 Items   
Sign in to start a discussion

  • What is wrong?
    2 Posts | Last post August 21, 2013
    • Hi,
      I'm using xdt:Locator="Condition(ID/text()='1')" to select <data> from:
      Sometimes it works and smonetimes not, can you tell me what can I do wrong that it isnt working?
    • PS. I'm doing this that way:
          <Data xdt:Locator="Condition(ID/text()='1')">
  • Must be missing something...
    1 Posts | Last post August 20, 2013
    • Just tried adding this to a VS2010 web application project and everything seemed to be ok but when I right click the web.config file I just see the stock Add Config Transform.  I can see it added to packages.config etc
      Is there something else I need to do to enable it?  
  • Visual Studio 2013
    1 Posts | Last post August 09, 2013
    • Can we expect an update for VS2013 in the near future by any chance? Was very sad to find out this is not currently compatible. Only extension from my toolset that is missing currently :/
  • Wrong filename on build server
    1 Posts | Last post August 06, 2013
    • This just recently started happening after an upgrade to Azure 2.1 NuGet components (not that this is related).  Anyway, my SlowCheetah transformations are still working on the build server, the problem is the output file name is wrong.
      I need myproject.dll.config to be the result of the transform, instead it is only transforming app.config.
      How do I tell SlowCheetah to output its transform result as myproject.dll.config?
      Thank you.
  • TransformXml skipped due to false condition
    2 Posts | Last post July 25, 2013
    • SlowCheetah has worked for me before to transform my App.config, using App.Debug.config, etc. This is in a Windows Service application.  It has worked on the build server, where I deploy by git cloning, as well without any extra steps. But now I've cloned my repo after a fresh install and it's not working for me. My OS is the same as it was before (Windows 7, 64-bit).
      Here's a clip from the build output:
      1>Task "SlowCheetah.Xdt.TransformXml" skipped, due to false condition; ( Exists('%(RelativeDir)%(Filename).$(Configuration)%(Extension)')
      1>                              and '%(Link)'=='' ) was evaluated as ( Exists('.Debug')
      1>                              and ''=='' ).
      Thanks for your help.
    • This turned out to be my own mistake. The namespace for some application settings had changed and I hadn't updated the xml in my App.Debug.config.  So they just weren't being copied because they didn't match.  It's working now. 
      Oddly enough, I'm still seeing the same message in my build output.
  • Build Error on MVC project when combined wtih MvcBuildViews option
    4 Posts | Last post July 15, 2013
    • First this is a fantastic tool, thank you.  I have a web project where we use the configSource option to redirect the web.config's AppSettings config section to an external file.  Your plugin is working great for transforming the dedicated AppSettings file *except* when we use the following option in our MVC Project:
      Using this setting over any Property Group invokes the aspnet_compiler to check MVC Views and/or Web Forms for compilation errors during the build process. When this property is set to true the configuration will not build, throwing the following error:
      {local dir}\{Solution}\{WebAppProject}\obj\{config}\csautoparameterize\original\web.config : error ASPCONFIG: An error occurred loading a configuration file: Directory 'C:\Data\Repositories\IPMS\IPMS.WWW\obj\dev-debug\csautoparameterize\original\App_Data\config' does not exist. Failed to start monitoring file changes.
      In our case the web.config file uses the configSource to redirect the following out into separate config files:
      appSetttings --> /App_Data/config/appSettings.config
      connnectionStrings --> /App_Data/config/connectionStrings.config
      Does this have to due with the timing of what files get transformed first?  Is there a workaround you are aware of?
    • Wow sorry Sayed my message got sandwiched all together.  I'll send you a formatted equivalent to your inbox.  Thanks
    • Hi DaFlookie, I just responded back to your email. We can just work it out there.
    • Hello, I see that the discussion is quite old but I have a similar problem. If it's possible could you please say what the solution to the described problem was?
  • Use SlowCheetah for other file extensions
    1 Posts | Last post July 08, 2013
    • Is it possible to use SlowCheetah for any other file extension? AnyConfig.config.transform for example? The reason for this requirement is that the sitecore cms include it's own merging logic for config files by application start. We solve this problem by using ctt and the suffix *.transform. But this tooling doesn't allow to use the great preview tool comes with slowcheetah. It's only console magic.
  • Visual Studio 2013 Support
    1 Posts | Last post July 02, 2013
    • I realize this is early but I have come to rely heavily on SlowCheetah and wonder when you will have a build that targets VS2013.
  • XML Transformation error if comma in attribute value
    2 Posts | Last post June 22, 2013
    • Hello,
      I have this lines in my app.config files :
      <unity xmlns="">
              <type type="Edenred.Framework.Caching.ICacheManager, Edenred.Framework" 
                    mapTo="Edenred.Framework.Caching.HttpRuntimeCacheManager, Edenred.Framework.Caching">
                <lifetime type="singleton" />
      And here is my xml transformation fille :
      <unity xmlns:xdt="" xmlns="">
                      <type mapTo="Edenred.Framework.Caching.AppFabricCacheManager, Edenred.Framework.Caching"
                            xdt:Locator="XPath(unity/containers/container/types/type[@type='Edenred.Framework.Caching.ICacheManager, Edenred.Framework'])"/>
      My xpath query below is valid (tested on internet with a XPath validator) :
      /unity/containers/container/types/type[@type='Edenred.Framework.Caching.ICacheManager, Edenred.Framework']
      But I have this error when I try to transform XML config with Slow Cheetah :
      "XPath requires exactly 1 argument"
      If I remove the "," in the value of the "type" attribute, that works.
      Thanks for your help.
    • This is caused by a bug in the Microsoft.Web.Publishing.Tasks.dll assembly. There is an easy workaround in your situation, which is to wrap your type attribute in parantheses, e.g.
      XPath(unity/containers/container/types/type[@type='Edenred.Framework.Caching.ICacheManager, Edenred.Framework']) =>
      XPath(unity/containers/container/types/type[(@type='Edenred.Framework.Caching.ICacheManager, Edenred.Framework')])
  • SlowCheetah and NLog config files?
    1 Posts | Last post June 14, 2013
    • Does SlowCheetah support NLog config files? I was able to use the "Add Transform" function to create NLog.Debug.config and NLog.Release.config but when I edit NLog.Release.config I don't get the Intellisense for the xdt xml entries. 
81 - 90 of 254 Items