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
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".
The simple mechanisms for replacing parts of XML that are used by msdeploy on web.config are equally useful with any other config files. SlowCheetah does a great job of extending that functionality in a transparent way to other files.
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.
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).
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.
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.
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.
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.
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.
Sayed Ibrahim Hashimi
We plan to use SlowCheetah to transform config files in the studio and on build server TeamCity.
Transformation: Web.config + Web.$(Configuration).config + Web.$(PublishProfile).config
We would like to use this scheme to other configuration files, such as App.config and NLog.config and etc.
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.
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.
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.
I was wondering if anyone has managed to get this working with MSTest and deploying item.
I have a BBCSearch.config file that has transforms for the different Environments. This file get transformed and outputted to the correct directory when build.
I can not find away to deploy the TRANSFORMED file to the test directory
When i add it as a deployment items as <projectpath>\BBCSearch.config, the original file is copied not the TRANSFORMED file.
We have a solution with 8 different build configurations. When I right-click on an app.config file in one of the projects and choose "Add Transform", only app.Debug.config and app.Release.config transform files are created. In other solutions, SlowCheetah works as expected. Anyone have any idea what's going on? Here's a list of the build configurations we have:
Debug (with DB Deploy)
Could the problem be based on one of the build configuration names? Thanks in advance. Using VS 2010 with SlowCheetah 2.5.1.
The issues is likely how you have created your build configurations. In VS when you create a build configuration it asks if you want to create a Project Configuration as well. You should check that checkbox. With SlowCheetah the transforms are based on Project Configurations, not solution config.
Just solved this, which is somewhat embarrassing, but the issue is that the individual project doesn't have all the configurations that the solution does. Manually adding the new configurations should fix the issue.
I just installed version 2.5.2. I'm trying to publish a WPF application for ClickOnce. I just started up a blank WPF project, added a transform to the App.config, and published. When I install the application, the config file isn't there. Can anybody else confirm? I'm using Visual Studio 2012 Ultimate.
What I do see is that an App.config.deploy file gets created in the publish\Application Files\WpfApplication1_1_0_0_0\obj\Debug\SlowCheetah directory when I publish. When the application is installed, an App.config file gets created using that same folder structure, but there's no WindowsApplication1.exe.config file created where the application needs it.
I have a collection of nodes, in a particular node i want to find a node and replace its values. This is custom section
How would i replace the Value in Type="t1" , subType ="t1s2" ?
Also how can i write a sysntax, that if node is present replace it otyherwise insert it?
I have a Worker Role project with an app.config. I have 6 different configurations with transforms in them.
When packaging an Azure app for deployment (right-click the "Cloud" project and select "Package"), the worker role's configuration files do not get transformed, or at least packaged up properly.
Is there a way to make this happen?
Thanks for sharing the link. If there are any further comments regarding this feature its best to keep those on the issue page <a href="https://github.com/sayedihashimi/slow-cheetah/issues/5">https://github.com/sayedihashimi/slow-cheetah/issues/5#issuecomment-11874800</a>
I am having the same issue. Your comments look hopeful. However, I can't seem to get to the link provided by by gautambjain. Is the link correct? Does it reference a version other than what is currently on the web site? Do I need any permissions to get into https://github.com/sayedihashimi ?
Please advise. Thanks.
I have an update. I did find the 2.5.1 release in the drop box. I uninstalled the prior release, and installed 2.5.1 on an existing project. Unfortunately, it doesn't seem to do the transform when I create a new package for an existing worker role. I am trying to transform app.config (which transforms as desired/expected when I go into debug). Is there anything else I need to do after the install besides re-generate the Azure worker role package?
Note I am using the November 2011 Azure SDK. Are the transforms dependent on the June 2012 Azure SDK release?
The XML-translation works very well in Visual Studio for my web project, but when I build a deployment package, I get a web.config with one error : only one XML-transformation doesn't done. I have $(ReplacableToken_xxx)" instead of :
connectionString="$(ReplacableToken_MyConnectionString-Web.config Connection String_0)"
Here is my xml-transformation :
<add connectionString="Data Source=MyDB\BE,1433; Initial Catalog=MyDB;Integrated Security=SSPI" xdt:Transform="SetAttributes(connectionString)" xdt:Locator="Condition(@name='MyConnectionString')"/>
Thank you for your help.
Thanks for the feedback this is not related to SlowCheetah. This is a part of the Web Project publish/package support. I've blogged more details of this at http://sedodream.com/2010/11/11/ASPNETWebApplicationPublishPackageTokenizingParameters.aspx.