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

(114) Review
Visual Studio
2013, 2012, 2010
Download (163,341)
E-mail Twitter Digg Facebook
Add to favorites
Reviews (114)
Q and A (231)
Sign in to write a review
Sort by:

by chris.morgan | September 04 2014

This extension has saved my countless hours setting up automated builds and continuous deployments. This is a must have if you need to do configuration file transforms during your build and deployment process.

by Gustin G | September 02 2014

Excellent tool - I use it in every project to achieve a clear configuration scenario.

by Thomas TwoAngel Rud Rasmussen | August 20 2014

Doesnt transforms, doesnt add new transforms, doesnt transform web.config as stated.

Soo, that's a no go im my environment

by Toons33 | July 21 2014

Terrific work -- the only problem with web.config can be solved with a little trickery (

THANK YOU SlowCheetah team.

by Victor Pascual Villanueva | July 15 2014

Making things a lot easier for Selenium testing across different browsers:

by Dmitriy N. Dokshin | July 08 2014

by Frank Fajardo | June 26 2014

Very useful. I like that it looks at the Publish Profiles, although be cautious when you rename a Profile, it does not rename the previously generated transform files. But you can always regenerate and delete the old.

by tomKober | June 24 2014

Works like a breeze. :)

by dkehring | June 24 2014

Simply does not work with ClickOnce. I have not found any information that shows how to make XML transformations work with ClickOnce. You can run the transform preview and it looks correct, but the .config.deploy file generated by ClickOnce is the original, untransformed config file. Very frustrating and completely unusable in my situation.

by Henrick P | June 19 2014

A real must if you wish to deploy to different machine with different configuration settings stored inside some other [filename].config. Still wonder why Microsoft don't have this functionality out of the box.

by marcelnita | May 22 2014


by Brad Deem | May 08 2014

Excellent! Glad to see this come to projects other than web. Now if only Microsoft would pick it up out the box...

Just remember to verify that it works without SlowCheetah installed so other devs don't have issues. Here's what I've used before.

<PropertyGroup Label="SlowCheetah">
<SlowCheetah_EnableImportFromNuGet Condition=" '$(SC_EnableImportFromNuGet)'=='' ">true</SlowCheetah_EnableImportFromNuGet>
<SlowCheetah_NuGetImportPath Condition=" '$(SlowCheetah_NuGetImportPath)'=='' ">$([System.IO.Path]::GetFullPath( $(MSBuildProjectDirectory)\..\packages\SlowCheetah.2.5.8\tools\SlowCheetah.Transforms.targets ))</SlowCheetah_NuGetImportPath>
<SlowCheetahTargets Condition=" '$(SlowCheetah_EnableImportFromNuGet)'=='true' and Exists('$(SlowCheetah_NuGetImportPath)') ">$(SlowCheetah_NuGetImportPath)</SlowCheetahTargets>
<Import Project="$(SlowCheetahTargets)" Condition="Exists('$(SlowCheetahTargets)')" Label="SlowCheetah" />

by SegaWang | April 26 2014

great transform tool. Thanks a lot

by CloudKarthik | April 22 2014

SlowCheetah doesn't work with Windows azure Web/worker Role projects.

by maskey | April 17 2014

by Mathias Colpaert | April 01 2014

SlowCheetah might be a bit buggy to set up, but once it works its great!

by Micky D | March 28 2014

Conflicts with ReSharper 8.1. Had to Suspend and Resume Resharper because I could not edit any file after applying a template

by Craig Brett (JP) | March 25 2014

I spent an afternoon trying to get this going for a team project. After a fair while thrashing with the already-mentioned "The SlowCheetah.Xdt.TransformXml" task could not be loaded from the assembly" problem, I eventually solved it by deleting the %localappdata%\Microsoft\MsBuild\Slowcheetah folder and it semed to resolve itself on my local machine and I was allowed to build and run stuff. I then deployed this to my colleagues who didn't have the plugin, under the impression that the NuGet package would make everything alright. No joy, regardless of what I tried. I'm now having to see if I can hand-roll a solution for changing config settings for people. Gets 2 stars because I like the idea and it kind of worked on my machine.

by Daniel Castenholz | February 07 2014

Nice integration with VS. Makes a chore much more manageable.

by Spesimensen | January 30 2014

Excelent tool! Thank you very much.

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

  • How to configure SlowCheetah to use Beyond Compare ?
    1 Posts | Last post December 07, 2012
    • Hello,
      I don't succeed to configure SlowCheetah in the Visaul Studio 2010 options, to use Beyond Compare as Diff tool.
      Could you give me the good settings please ?
      Thank you.
  • Can SlowCheetah be used to transform config files with reference to external config file (where config sections have configSource attribute set)?
    1 Posts | Last post December 06, 2012
    • I have a web.config file which refers a bunch of external config files using configSource attribute on the configuration elements. I would like to know if there is a way to transform this web.config file using either "web transformations" or "slow cheetah" or any other method, so that each of the environments (Staging/QA/UAT) will pick up a different external config files ?
      web.config :- 
      <connectionStrings configSource="Configuration\ConnectionStrings.config">
      ConnectionStrings.config :-
        <add name="DBCon1" connectionString="...." providerName="System.Data.SqlClient" />
        <add name="DBCon2" connectionString="...." providerName="System.Data.EntityClient" />
      ConnectionStrings.Release.config :-
        <add name="DBCon1" connectionString="foo" providerName="System.Data.SqlClient" />
        <add name="DBCon2" connectionString="bar" providerName="System.Data.EntityClient" />
      I want to know if there is a way to make the Web.config to point to Release.config file when the Release Configuration build is triggered from VS ?
      Thanks in advance.
  • can't get to install on VS2012
    2 Posts | Last post December 03, 2012
    • Hey guys.  I've installed this tool at my last 2 jobs in VS2010, however, I can't seem to get it working with VS2012.  IS there something different that needs to be done, or something I can check to make sure it installs correctly?
      If I try to reinstall, it tells me that it has been installed for all applicable products
    • Hi Kevin, it should be working fine for VS2012. Could you try and create a Win Forms project and right click on app.config to see if an Add Transform menu item appears or not?
  • publish fails after upgrade to 2.5
    5 Posts | Last post November 29, 2012
    • I just upgraded to 2.5, and now my publish fails with following error. Publish was working before upgrade.
      AppData\Local\Microsoft\MSBuild\SlowCheetah\v1\SlowCheetah.Transforms.targets(170,11): Error MSB4057: The target "CoreCopyTransformFilesWap" does not exist in the project.
    • There may be a bug here, see my comment at <a href=""></a> for a method to revert back to the previous version until I can fix it.
    • I have just updated the released version, this should now be fixed can you try it out and let me know?
    • Yet, it is working now. FYI, It did not work with direct update. I had to uninstall extension first and delete the SlowCheetah folder from AppData\Microsoft\MsBuild.
      Thank you!
    • That shouldn't be the case, I'll keep an eye out for feedback on this.
  • Anyone using this with unit tests
    2 Posts | Last post November 29, 2012
    • I have a unit test assembly that has a app.config, which has multiple configurations config files setup.  I've installed SlowCheetah 2.5.1.  When I compile and run the unit test assembly, the dll gets copied to the appropriate bin folder but the transform has not been performed on the app.config file.   Is there anything I can check to see if I've done something wrong?
      I am running the unit tests locally, there is no CI process involved at this stage.
      When I use VS2012 and preview the Transforms they all look good and work as expected.
    • Could you give specific steps that I could follow to reproduce your issue?
  • Changing formatting
    4 Posts | Last post November 24, 2012
    • I have the following XML in my transform file, and when it replaces the defined setting, the closing "</value>" tag is wrapped down to the next line and my setting value has a "\r\n   " tacked on the end of the email address.  Any idea what is causing that?
            <setting name="FinanceEmailAddress" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace">
    • Hi, would you mind sending me your config file as well as the transform file? My email is (sayedha[at]{Mic​rosoft}[DOTCOM]).
    • Sorry to post on an old thread, but I'm having the same issue.
      Is there any solution available?
    • If you are still seeing this behavior there is no work around. Sorry.
  • Latest Update does not transform files
    5 Posts | Last post November 24, 2012
    • I've updated to the latest (2.5) and now all config files except for web.config do not transform on a publish using VS2012. My publish profile name is the same as the transform file suffix (Publish1 and myconfig.Publish1.config). The transform preview works correctly. The previous version was working fine with the publish profiles I created. The published config files are not modified in any way (they still retain the original last modified date). I also used the vsix from issue 46 and the transform did not occur.
    • Can you give specific steps? I just tried the following and it worked.
      1. Create a new project
      2. Add transform details to web.debug.config/web.release.config
      3. Add foo.xml
      4. Add Transform on foo.xml
      5. Add transform details to foo.debug.config/foo.release.config
      6. Publish to an Azure Web Site using MSDeploy
      From what I can see it looks like its working
    • Doing some troubleshooting it looks like the problem is limited to file system publishing to a directory. Changing the publish to a web deploy or web deploy package runs the transforms.
    • File System publish for web only supports extensibility from the command line. When publishing from VS the same extensibility doesn't exist in the UI. So there is nothing SlowCheetah can do here. For this the best thing to do is open a bug at 
    • Ignore my previous comment, its not 100% correct.
      Can you try it out with the latest version and let me know if it doesn't work for you?
  • Cannot see the "Add Transform" context menu item
    2 Posts | Last post November 22, 2012
    • Hello Internets,
      I am unable to get the "Add Transform" context menu item to appear for existing and new test projects, and am hoping someone out there has experienced a similar issue.
      I'm running Visual Studio 2010 on Windows 7, and have the latest version of NuGet (2.1.31002.9028) installed (I install SlowCheetah via Solutions Explorer>Manage NuGet Packages).
      I've tried starting VS as follows:
      1) "devenv.exe /log" but that did not produce helpful info. 
      2) "devenv.exe /SafeMode" but experienced the same problem
      3) As an administrator
    • What do you mean by "test project"? When you create the project what is the title of the project in the Add New Project dialog?
  • Unable to transform endpoints in Windows Service
    3 Posts | Last post November 22, 2012
    • I am having problems getting the endpoint on my app.config to do a transform that changes the address ( really the whole tag) in my windows service using the latest SlowCheetah 2.4.1 and using Visual Studio 2010. This is for a Windows Service .NET 4.0.
       Do to size restrictions, I am removing the endpoint binding info I use the following code for the regular app.config:
      <?xml version="1.0"?>
            <endpoint address="http://developmentServer/WebServices/MasterEngine/MasterEngineService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMasterEngineService" contract="OverlayFarEnd.IMasterEngineService" name="BasicHttpBinding_IMasterEngineService"/>
      And the app.Release.config is as follows:
      <configuration xmlns:xdt="">
        <endpoint address="http://productionServer/WebServices/MasterEngine/MasterEngineService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMasterEngineService" contract="OverlayFarEnd.IMasterEngineService" name="BasicHttpBinding_IMasterEngineService"  xdt:Transform="Replace" xdt:Locator="Match(name)">
      I have tried adding the client tag outside the endpoint, removing it etc...
      The weird thing is that the connectionString does the transform, but the endpoint does not. Any ideas? I'm going off matching the name and i've copy and pasted it to each place to make sure it is correct.
      Thanks in advance :(
    • Sorry for the late reply here, are you still having issues here or did you resolve them?
    • I'm having the same problem.
      I have 3 config files. app.Debug.config, app.Staging.config and app.Release.config.
      Each of these files must point to a different service endpoint but it doesn't seem to be working.
      Here's my original app.config:
      <?xml version="1.0" encoding="utf-8"?>
              <binding name="BasicHttpBinding_IInHouseService" />
            <endpoint address="http://localhost:64718/Integrations/InHouse/InHouseService.svc"
              binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IInHouseService"
              contract="InHouse_LOCAL.IInHouseService" name="BasicHttpBinding_IInHouseService" />
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3" />
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
              <assemblyIdentity name="PresentationFramework" publicKeyToken="31bf3856ad364e35" culture="neutral" />
              <bindingRedirect oldVersion="" newVersion="" />
              <assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
              <bindingRedirect oldVersion="" newVersion="" />
      Here's my app.Staging.config:
      <configuration xmlns:xdt="">
        <endpoint address=""
              binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IInHouseService"
              contract="InHouse_LOCAL.IInHouseService" name="BasicHttpBinding_IInHouseService" xdt:transform="replace"
  • Web Performance Test
    2 Posts | Last post November 13, 2012
    • Nice tool. It simplifies the process of kicking off automation runs in different environments, without the need to edit the app.config file. I have just a couple of issues with it:
      - I can't debug different environments without editing the debug app.config. I wouldn't otherwise even need an app.debug.config file.
      - When switching configuration and rebuilding, I get an error message that a test with the same id as (insert random test case) has already been loaded in the test editor.
      - When debugging a web performance test, if I open the test case to watch the results while the test is executing, Visual Studio crashes. Since I can't debug a data driven web performance test case without opening to watch it execute, this is a major problem. I never had this problem before installing slowcheetah, so it is my prime suspect.
    • Sorry I've never heard of this before. Are you using VS2010 or 2012. Could you give me some steps to follow to reproduce the crash?
101 - 110 of 231 Items