SlowCheetah - XML Transforms

Free

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

(112) Review
Visual Studio
2013, 2012, 2010
Download (152,359)
7/20/2014
2.5.11
View
E-mail Twitter del.icio.us Digg Facebook
Add to favorites
Description
Reviews (112)
Q and A (230)
Sign in to write a review
Sort by:

by chris.morgan | Mon 7:02 PM

Nice extension for a very needed feature.

by Toons33 | July 21 2014

Terrific work -- the only problem with web.config can be solved with a little trickery (http://stackoverflow.com/questions/16225304/using-slowcheetah-config-transforms-on-web-config-in-a-3-5-web-forms-app).

THANK YOU SlowCheetah team.

by Victor Pascual Villanueva | July 15 2014

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

http://testingisland.wordpress.com/2014/07/10/how-slowcheetah-can-help-with-your-selenium-tests/

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

Great!

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>
</PropertyGroup>
<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.

by Leonidas1 | December 06 2013

by AranV | November 27 2013

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


  • Set up my app.config and check in code properly
    1 Posts | Last post April 01, 2013
    • Hello, I have a hard time to set up app.config, app.debug.config and app.release.config in my console application.
      If in the local app.config there is “<add key="ServiceID" value="R2" />”. And in the server it should be 
      <add key="ServiceID" value="R1" />. 
      I can’t use “R1” in mylocal machine to debug, otherwise an exception is thrown out.
      I did add <appSettings xdt:Transform="Replace"> in the app.release.config.
      Then the value is “R1” in app.release.config and it is “R2” in app.debug.config. Is it right?
      My questions:
      1) What is the value in app.config? "R1" or "R2"? I need a direct answer.
      2) When I check in the code app.config, What is the value in app.config?
      
      A little explaination is appreciated.
  • Original Config file modified
    12 Posts | Last post March 25, 2013
    • Hi,
      
      I have just installed and am using Slow-Cheetah.  I am using it to transform my Log.config which is used by Log4Net.  It is modifying the original config file, and not just the config file in the output directory.  This means that if if have an 'Insert' transform and build 3 times, I will get the XML element inserted 3 times into the original file.
      
      Can you confirm this bug?
      
      Cheers,
      Dan
    • FYI - I'm using Slow Cheetah version 2.5.5 and VS2010 SP1.
    • I've heard of this but I've been unable to repro it. Does this happen for new projects as well? If so could you give me some repro steps? If its only on a specific project can you share the project?
    • Hi Sayed,
      
      I've reproduced this with a bare bones project.  It is an Empty Web Application and I am running the transforms on Log.config.  You can see that if you build the app multiple times, the original Log.config file has the XML inserted every time.
      
      The I am using VS2010 Ultimate SP1.
      
      http://dl.dropbox.com/u/10302501/SlowCheetah.zip
      
      Thanks,
      Dan
      
    • Thanks for sharing the project. When I extract this and run the app the source config file is not changed at all. I'm not sure what's going on here. What OS are you running? I have win 8 here.
      
      One thing that might help here is to share a build log with me. For the project you shared, can you try the following. In VS go to Tools->Options->Projects and Solutions->Build and Run, set MSBuild output verbosity to Diagnostic. Kick off a build which causes the file to get modified. Copy and paste the build log from the output window. If you could email that to me at sayedha@microsoft.om I can compare it to that of my machine and see what the difference is here.
    • I think this is the same error I've mentioned above. It's attempting to write over the original source file: Could not write Destination file: Access to the path '***originalfilepath***' is denied. Windows 7 Professional, VS 2010.
    • I have a team member that is experiencing the issue while I am not being impacted.  We both have pretty identical desktop images, however our VS installs are different (he has Pro 2010 while I have both Ult 2010 and Prem 2012).  I'll get diagnostic traces from both his and my version of the same project and send them to you as well.
    • I've noticed if I right click on the project and select 'Publish' it errors, if I use Build > Deploy through VS toolbar it works successfully. Not sure what the difference is. Just a quick note.
    • Outside of the obvious entire solution build vs single project.
    • My colleague and I have downloaded the repro project and have verified that his environment is affected while mine is not. Both he and I ran builds with diagnostic output enabled and the one main thing I see is that in my log (which is transforming correctly) I see the following:
      
      BuiltWebOutputGroupOutput
         C:\Users\user.x.name\Downloads\SlowCheetah\SlowCheetah\SlowCheetah\bin\Log.config
            OriginalItemSpec = C:\Users\user.x.name\Downloads\SlowCheetah\SlowCheetah\SlowCheetah\bin\**\*.*
      
      The above lines are *not* present in my colleague's build log.  I'll email you both logs in their entirety for you to investigate.
    • What I found is that the Targets file may be incorrect.  I'm running Visual Studio 2010 Premium.  Here's what I was getting:
      
      6>Task "SlowCheetah.Xdt.TransformXml" (TaskId:286)
      6>  Transfroming source file: X:\**********************\Data\DataModelClient\ServerURLConfig.xml (TaskId:286)
      6>  Applying Transform File: ServerURLConfig.Debug.xml (TaskId:286)
      6>  Output File: bin\Debug\ServerURLConfig.xml (TaskId:286)
      6>X:\**********************\packages\SlowCheetah.2.5.5\tools\SlowCheetah.Transforms.targets(101,5): error : Could not write Destination file: Access to the path 'X:\**********************\Data\DataModelClient\ServerURLConfig.xml' is denied.
           
      6>Done executing task "SlowCheetah.Xdt.TransformXml" -- FAILED. (TaskId:286)
      
      When I change the Destination attribute on the task as follows, it works properly:
          Destination="$(OutDir)%(Filename)%(Extension)"
      
    • Two things that I should have made note of: the transform was failing before because the XML file was read-only.  The second is that referencing projects are copying the non-transformed XML into the bin directories.  That may be an unrelated item, but is a result of the fact that the XML file is being transformed in the referenced projects bin folder instead of the XML source location.
  • app.Release.config & app.Debug.config not appearing in solution list
    2 Posts | Last post March 23, 2013
    • G'day,
      
      Just installed SlowCheetah, love the concept.  But I've run into a bit of a problem: after adding a transform, the files app.Release.config & app.Debug.config appear in the directory, but not in the solution list within visual studio (2010).  That is, while app.config is there, no "+" is next to it, nor are the other two files shown anywhere.  Any clue what I'm doing wrong?  Or is this a known bug?  I've tried creating a blank visual basic project, added in an app.config file, transformed it, and got the same result.
      
      Thank you,
      Thom
      
    • Thanks for the note. I'm not following you, could you give a step by step describing the issue?
  • Preview transformation strips out spaces
    2 Posts | Last post March 23, 2013
    • Hi all,
      
      I have a web.config and some transformations for it. whenever i try to preview a transformation (great feature!) i see lots of changes. This is mainly because SlowCheetah strips additional spaces from my original config file, and thus showing lots changes. see this example image: http://screencast.com/t/mZPbrpVRudh
      
      here you even see spaces are stripped out from comment. Is this by design?
    • Thanks, this is likely an issue with XDT itself. There's an issue for it at https://github.com/sayedihashimi/slow-cheetah/issues/80. Please use that link for further follow ups. 
  • New version XDT?
    5 Posts | Last post March 07, 2013
    • You mentioned adding XDT, what do I need to do with projects that were created using and old version? My concern is with other team members not having slowCheetah installed.
    • Just right click on Add Transform on some XML file. It will add the NuGet package automatically if its not installed. Then make sure to enable package restore. With package restore even if the user doesn't have SlowCheetah installed the files will be transformed. SlowCheeth (the VS extension) just provides the VS command to add transform/preview. The rest of the functionality is in the NuGet package. That's one of the great benefits of this update.
    • Sweet, that is perfect! 
      Thank you for this awesome tool!
    • Well I tested this on an existing app and it did not install any nuget package. So I installed it manually. Will that work ? 
    • Yeah that's fine, but check that you have 2.5.5 installed. 
  • Slow Cheetah transforms on Build and modifies project web.config
    4 Posts | Last post March 05, 2013
    • This is a strange one.  I had a client install the slow cheetah extension and then build the project.  The web config in the project was transformed to whichever build config was selected.  This behavior is not reproducible on my machine or my colleagues'.  This is a Visual Studio 2010 Professional w/ SP1.  One thing I did notice was he didn't have nuget package manager installed yet.  We're troubleshooting this tomorrow and I'm proposing to remove both extensions then add Nuget and last add slowcheetah (through nuget).  
      
      Have you seen this behavior reported before and if so, was there a set of steps to prevent it?  
      
      Thanks.
    • I've never heard of this issue. Does it repro on the same box with a new project? It could be something else messing with web.config.
    • I have very similar behavior and can reproduce it with VS 2010 and SlowCheetah 2.5.5.  I create a new ConsoleApplication, add a file called testFile.config, right click and select Add Transform.  The Debug and Release Versions are added and I make slight alterations ending up with:
      
      testFile.config
      <outerTag>
      </outerTag>
      
      testFile.Debug.config
      <outerTag xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      	<myDebugTag xdt:Transform="Insert"></myDebugTag>
      </outerTag>
      
      testFile.Release.config
      <outerTag xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
      	<myReleaseTag xdt:Transform="Insert"></myReleaseTag>
      </outerTag>
      
      If I build with Debug configuration selected, the testFile.config file is modified to be:
      <outerTag>
      	<myDebugTag>
      	</myDebugTag>
      	<myDebugTag>
      	</myDebugTag>
      </outerTag>
      
      Everytime I re-build, I get two additional <myDebugTag>s added.  Similar behavior with Release, it just adds two <myReleaseTag>s.  I have a colleague with version 2.5.1 of SlowCheetah and it does not exhibit this behavior.
      
      Thank,
      Patrick
    • Hi, I cannot reproduce this. Tried with both VS2010/VS2012 and multiple machines. Could you give specific steps that I can follow from a new project? 
  • ClickOnce for VSTO Addin for VS2010
    2 Posts | Last post March 02, 2013
    • Hi,
      
      We are working on VSTO Addin for Excel on VS 2010 and using this tool for transformation. When we build it is transforming, but not when we publish. And this will then be integrated for TFS builds as well.
      
      It seems to work for WPF and Windows publish.
      Are we missing anything here? Any pointers would be helpful.
      
      Thanks
    • I've never tried this scenario before, so am not surprised that it doesn't work. If you'd like this feature please create a new entry at http://slowcheetah.uservoice.com/. Once it gets enough votes I will consider implementing the feature.
  • Using SlowCheetah Without NuGet?
    2 Posts | Last post March 02, 2013
    • I stumbled upon SlowCheetah last week. Very cool extension. I see it has been recently upgraded to be NuGet dependent. This causes a couple problems for my group:
      
      1. We have made the decisions that developers should not use NuGet.
      
      2. Our TFS build server is not Internet facing, so downloading from NuGet as part of the build is not possible.
      
      If I could find a link to the older version of SlowCheetah, we could use that. Even that though is not ideal, as we would be stuck on an old version, not being able to take advantage of new features.
      
      Any other groups in the same situation as myself and any thoughts from the developer on this? Thanks.
    • Thanks for the comments. Are your concerns that it uses NuGet or that it connects to the internet? If it is related to connecting to the internet take this into consideration.
      When SlowCheetah is installed if you have a custom local repo defined in VS it will pull packages from that location instead of from nuget.org. You could also put a feature request in at http://slowcheetah.uservoice.com/ for SlowCheetah to drop the NuGet package on install and then reference it from that location instead of going to nuget.org. This should be pretty straight forward and I should be able to implement it.
      
      If the concern is simply the fact that it uses NuGet, then take the following points into consideration.
      1. NuGet is used by many projects types by default in VS 2012.
      2. Microsoft will be investing more in NuGet (i.e. its not going away anytime soon, and it will be used more and more)
      3. Benefits to using the NuGet package:
      3.1 When SlowCheethah is installed by one developer, all devs will get the transform behavior even if they didn't install the package.
      3.2 When SlowCheetah is executed from an automated build package restore facilitates transforming the XML files.
      
      With those points the benefits out weigh the negatives.
      
      If you'd like to use a version which has the previous behavior the best thing to do is to fork the repo at https://github.com/sayedihashimi/slow-cheetah and build whatever version you desire. I won't be supporting that though, you'd be on your own.
      
      I hope you consider these points.
      
      Thanks,
      Sayed Ibrahim Hashimi
  • Viktor Kuznetsov
    4 Posts | Last post March 02, 2013
    • We plan to use SlowCheetah to transform config files in the studio and on build server TeamCity.
      
      Example:
      
      <MSBuild Projects="WebUi\WebUi.csproj"
      Targets="Build"
      Properties="
      Configuration=$(Configuration);
      Platform=$(Platform);             
      DeployOnBuild=true;
      PublishProfile=$(PublishProfile);"></MSBuild>
      
      Transformation: Web.config + Web.$(Configuration).config + Web.$(PublishProfile).config
      
      http://www.hanselman.com/blog/TinyHappyFeatures3PublishingImprovementsChainedConfigTransformsAndDeployingASPNETAppsFromTheCommandLine.aspx
      
      We would like to use this scheme to other configuration files, such as App.config and NLog.config and etc.
      
      How?
    • I found answer for question http://sedodream.com/2012/12/24/SlowCheetahBuildServerSupportUpdated.aspx :)
    • Why packageRestore.proj is created in project and not in root of solution? Have to call a build packageRestore.proj before each build project.
    • Its at the project level because NuGet package restore is a project level concept. With that said if you have multiple projects in a solution which each have SlowCheetah you only need to invoke the packageRestore.proj for one project. All the files for the solution go into the same folder. So there is no benefit of calling packageRestore.proj multiple times for the same solution.
  • Work with Visual Studio 2008
    5 Posts | Last post February 25, 2013
    • Hi,
      
      I'm working on visual studio 2008 environment. I read the compatibility with only 2010 or 2012. 
      
      Is there an older versions which supports 2008 visual studio?
      
      Can you post the link?
      
      I'm trying to use this to my BIDS 2008 app to configure test and dev environment.
      
      Thanks! 
    • Sorry, there is no support for VS 2008.
    • So that means in order to use it, I should install SQL Server/BIDS 2012. Correct?
    • Also, do you recommend any other plugins or recommended way to achieve multi environment config files for the same SSIS package. I would appreciate it.
    • SlowCheetah does not have any support for DB projects. I'm not sure what support you were envisioning there. We are prioritizing features at http://slowcheetah.uservoice.com/. The best thing to do here is to create an item with the behavior you are looking for. After that we can prioritize that work against the other requests.
81 - 90 of 230 Items