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

(70) Review
Visual Studio
2012, 2010
Download (68,616)
2/23/2013
2.5.5
View
E-mail Twitter del.icio.us Digg Facebook
Add To Favorites
Description
Reviews (70)
Q and A (161)
Sign in to Write a Review
Sort By:

by Philippe Truche | May 08 2013

Excellent tool. Maybe the next Visual Studio Service Pack will include it so that it becomes an out of the box feature.

by Brad Deem | May 03 2013

by Zahid Iq | April 30 2013

excellent !!
a long awaited extension

by straightener | April 09 2013

We had several self-inflicted wounds with accidentally testing applications that had config entries that pointed to production instead of the quality assurance environment. Because of this we searched and found Slow Cheetah that let us separate the configs into Development, QA, and Production. Things are a lot safer now. Thanks for creating this.

by rovsork | March 19 2013

This just makes life that much easier.
Powerful and simple, and it gives you a feature that feels so natural you would thought it was already there!

by arcainatwork | March 14 2013

This extension is one of the most useful in my toolbox. If MS doesn't roll this functionality into VS, it could be considered a crime.

by Damian Penney | March 06 2013

This works really well - exactly what I was looking for. Thanks guys!

by Daniel Mackay | March 05 2013

Watched the Visual Studio Toolbox video on this some time ago, but have only just installed it. The tool is great and Its saving me heaps of time! No more building and deploying just to diff config files. Thanks for the work on this extension!

by bargz | March 04 2013

This an a most excellent extension. Very helpful to preview and publish configuration transforms for development, test and production environments.

by Caio de Arruda Campos | March 03 2013

Awesome! Exactly what we needed.
Love how it creates files for each publish profile as well as debug/release.

by Jaybirdbsu | February 26 2013

I love the way this works on the build servers!

by Yuri Shpakov | February 16 2013

Hi,

That is a cool stuff. That is to be installed on a develoer computer (VS). But how can I install on build server? Do you have any installation program for that?

Thank you

Sayed-Ibrahim-Hashimi February 17 2013
| Edit |
Delete

Hi Yuri, see my blog post at http://sedodream.com/2012/12/24/SlowCheetahBuildServerSupportUpdated.aspx regarding how to get it working for build servers.

by James Alexander | February 04 2013

Thank you so much for adding support for Azure Worker Roles!

by Erick Mendonça | January 25 2013

It's cool, but does not work for web.config as good as it works for app.config.

Sayed-Ibrahim-Hashimi February 02 2013
| Edit |
Delete

It's on the backlog https://github.com/sayedihashimi/slow-cheetah/issues/39. Should be the next major feature I work on. For web projects this support is much trickier than non-web projects.

by Mike Gledhill | January 09 2013

Excellent. My app.config's are now updated with a Test, PreProd or Prod SQL Server connection string, even when running (rather than Deploying) my apps. A lifesaver - thanks!

by Emilio Gordo | December 07 2012

by rhizohm | December 04 2012

a life saver. thanks guys! great implementation!

by Dave Sexton | November 24 2012

by El Bruno | November 13 2012

Great tool !!!

by Citronas | November 04 2012

Awesome! I'm just so used to web.config transforms in ASP.Net applications that I also want this functionality in a WinForms Application.

Your add-in works like a charm. Keep up the good work. I hope this add-in will be included into VS 2012 sometime in the future, just like they did with Nuget.

Even debug sessions are effected by the transform, depending on the selecte d solution configuration! Really nice work.

Sayed-Ibrahim-Hashimi November 24 2012
| Edit |
Delete

It won't be included in VS2012, and at this time it likely wont ever make it into VS. If you think it should I suggest you make a suggestion at http://visualstudio.uservoice.com/ and have all your friends vote it up.

1 - 20 of 70 Items   
Sign in to Start a Discussion


  • 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="https://github.com/sayedihashimi/slow-cheetah/issues/52">https://github.com/sayedihashimi/slow-cheetah/issues/52</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.
      Thanks,
      Jason
    • 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?
      
        <applicationSettings>
          <MyProject.Properties.Settings>
            <setting name="FinanceEmailAddress" serializeAs="String" xdt:Locator="Match(name)" xdt:Transform="Replace">
              <value>mary.jo@mycompany.com</value>
            </setting>
          </MyProject.Properties.Settings>
        </applicationSettings>
      
    • 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 connect.microsoft.com. 
    • 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"?>
      <configuration>
          <client>
            <endpoint address="http://developmentServer/WebServices/MasterEngine/MasterEngineService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IMasterEngineService" contract="OverlayFarEnd.IMasterEngineService" name="BasicHttpBinding_IMasterEngineService"/>
          </client>
      </configuration>
      
      And the app.Release.config is as follows:
      
      <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
        <connectionStrings>
        <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)">
        </endpoint>
      </configuration>
      
      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"?>
      <configuration>
        <system.serviceModel>
          <bindings>
            <basicHttpBinding>
              <binding name="BasicHttpBinding_IInHouseService" />
            </basicHttpBinding>
          </bindings>
          <client>
            <endpoint address="http://localhost:64718/Integrations/InHouse/InHouseService.svc"
              binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IInHouseService"
              contract="InHouse_LOCAL.IInHouseService" name="BasicHttpBinding_IInHouseService" />
          </client>
        </system.serviceModel>
        <startup>
          <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0.3" />
        </startup>
        <runtime>
          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
              <assemblyIdentity name="PresentationFramework" publicKeyToken="31bf3856ad364e35" culture="neutral" />
              <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
              <assemblyIdentity name="Lucene.Net" publicKeyToken="85089178b9ac3181" culture="neutral" />
              <bindingRedirect oldVersion="0.0.0.0-3.0.3.0" newVersion="3.0.3.0" />
            </dependentAssembly>
          </assemblyBinding>
        </runtime>
      </configuration>
      
      Here's my app.Staging.config:
      
      <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
        <endpoint address="http://freightQA.fnf.co.za/integrations/inhouse/inhouseservice.svc"
              binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IInHouseService"
              contract="InHouse_LOCAL.IInHouseService" name="BasicHttpBinding_IInHouseService" xdt:transform="replace"
                   xdt:locator="Match(name)"/>
      </configuration>
  • 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.
      
      Thanks,
      Gary
    • 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?
  • Chakravarthi
    2 Posts | Last Post November 13, 2012
    • I have two xml files. 1. The source file. 2. The file that should be after applying the transformation. Is it possible to generate the SlowCheetah transformation xml by comparing these two files?
      
      Thanks
      Chakravarthi 
    • We do not have any support to auto generate transform files.
  • app.config transforms and MSBUILD
    2 Posts | Last Post November 13, 2012
    • I am having problems determining how to fix this issue.  Hoping someone with more insight into this can help...
      
      I have a console app with an app.config transform for Debug / Release.  In the csproj file, I have a PostBuildEvent command that executes a batch file.  This batch file is supposed to copy the output of the build and the transformed .config file to another directory.  
      
      Looking at the build logs, the PostBuildEvent is executing *before* SlowCheetah transforms the config files.  As a result, the (untransformed) app.config is getting copied--not the transformed version.
      
      I have also tried moving the execution of the batch file into the AfterBuild task with the same results.
      
      How can I force SlowChetah to execute before the batch file is executed?  
    • A post build event is an event that is executed after the project is built. It does not specify whether it occurs before/after any other targets. In your case if you need to execute a target before/after transforms I would create a Target and then use the TransformAllFiles in the BeforeTargets attribute or the AfterTargets attribute of the target which you are creating. You can also place it in the DependsOnTargets value as well depending on your needs.
  • Slowcheetah & Azure Worker Role project compilation
    3 Posts | Last Post November 11, 2012
    • Hi,
      I tried using this with my Nlog.config added in worker role. Giving me strange error. 
      
      Error 163 The item "bin\Debug\NLog.config" in item list "OutputGroups" does not define a value for metadata "TargetPath". In order to use this metadata, either qualify it by specifying %(OutputGroups.TargetPath), or ensure that all items in this list define a value for this metadata. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Windows Azure Tools\1.6\Microsoft.WindowsAzure.targets 2299 5 Insight.CloudWeb
      
      My SO Question:- http://stackoverflow.com/questions/11790895/azure-worker-role-configuration-issue-while-using-slowcheetah-with-custom-config
    • Hi, I am still working to get the Azure Worker Role support. Now that the new Azure SDK was released I'll start working on it again.
    • Azure Worker Roles support would be great!
31 - 40 of 161 Items