I suggest you ...

Support web.config style Transforms on any file in any project type

Web.config Transforms offer a great way to handle environment-specific settings. XML and other files frequently warrant similar changes when building for development (Debug), SIT, UAT, and production (Release). It is easy to create additional build configurations to support multiple environments via transforms. Unfortunately, not everything can be handled in web.config files many settings need to be changed in xml or other "config" files.

Also, this functionality is needed in other project types - most notably SharePoint 2010 projects.

8,828 votes
Vote
Sign in
Check!
(thinking…)
Reset
or sign in with
  • facebook
  • google
    Password icon
    I agree to the terms of service
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    Chuck Fields shared this idea  ·   ·  Flag idea as inappropriate…  ·  Admin →

    We believe we have addressed the main issues that are top of mind regarding this UserVoice item and are closing this item as completed.

    First, we have added additional support for XML files. Second, the Visual Studio team has taken ownership of SlowCheetah and will be maintaining and updating it moving forward. Lastly, SlowCheetah has been integrated with MSBuild by adding NuGet support for transformations. Projects that depend on SlowCheetah will restore NuGet packages and apply transformations after build. We need to balance adding new features to Visual Studio with performance and simplicity. The SlowCheetah extension allows users to add and preview transforms but isn’t required to execute a transform. Given a relatively low usage of these features and the flexibility in shipping we get by staying out of the Visual Studio release cycle, we believe it’s better for the Visual Studio developer community that SlowCheetah stays as an extension that is fully supported by Microsoft.

    If you have additional requests for SlowCheetah or believe this resolution doesn’t meet all of your requirements, please open a new UserVoice item for that specific concern.

    You can find the SlowCheetah extension here: https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.SlowCheetah-XMLTransforms

    Please file any bugs on our GitHub page: https://github.com/Microsoft/slow-cheetah/issues

    Thank you for helping improve Visual Studio!

    522 comments

    Sign in
    Check!
    (thinking…)
    Reset
    or sign in with
    • facebook
    • google
      Password icon
      I agree to the terms of service
      Signed in as (Sign out)
      Submitting...
      • Mike commented  ·   ·  Flag as inappropriate

        I don't know if that's good news or bad news. Was hoping this functionality would be rolled into the next version of VS.
        I have no interest in using these third party tools for this very reason. They abandoned and we end up painting ourselves into a corner.
        Please support this and put it into the next version of VS, so that we can do what web developers have been able to do for years.

      • Misiu commented  ·   ·  Flag as inappropriate

        This is a must have feature for VS. For now when I publish my WebApi application (website) I get only Web.config transformed. If I move appSettings to external file it isn't transformed. SlowCheetah solves that problem, but this must be build in into VS.

      • Adrian Mos commented  ·   ·  Flag as inappropriate

        So... SlowCheetah hasn't been updated in a while, its github page is abandoned since 2014, VS2015 has long since launched and VS2017 is close to being launched... anything?

      • Mark Middlemist commented  ·   ·  Flag as inappropriate

        Can I just add my voice to those saying about support for visual studio 2017 config transforms. For our build processes this is a critical issue and once blocking me from recommending an early push to this version

      • Anonymous commented  ·   ·  Flag as inappropriate

        So with VS 2017 looming where is this? Are we going to get an updated third party extension again or is this coming built in?

      • Dave commented  ·   ·  Flag as inappropriate

        Please can a solution also be devised so that linked Class Libraries (e.g. If WebApp 1 and WebAppMVC and ClassLib1 all exist in the same solution), that app.settings in the class library are also carried through to each web application.

        We have a large web solution that is duplicated for different clients. The only difference is the config settings to link to databases/email etc, some of which exist in the class library. Using SlowCheetah, these are currently ignored (read as null) when pulled into the web app's. Therefore currently our settings file have to exist outside the app, and be read on application_start... It seems messy when there's potential to keep this tidy, and all in one IDE!

      • Mark Hurd commented  ·   ·  Flag as inappropriate

        I'm sure we all have changes to existing files for (local) testing too. Ones that we revert before checking-in real changes, only to redo immediately after checking-in. It is mostly app.config and web.config, but the current SlowCheetah doesn't cater for this. And I can imagine others have #defines like this.

      • Anonymous commented  ·   ·  Flag as inappropriate

        5 years with not a solution from the Microsoft Visual Studio team. How many years will it take to get this changed?

        Our commercial product team will either make the change within 1.5 years or close it out with a 'never to be done' status within that 1.5 years.

        We'd lose many of the Fortune 1000 multinational customers we have if we left open customer requests and repeatedly stated 'we're considering it for a future version' to them.

      • vu commented  ·   ·  Flag as inappropriate

        The configuration file handling part of .NET should be less than a thousands of lines of code.

        Pointing to a third party VS add in is OK for the short run but the third party VS add-in tool is not something a business customer's $1,000,000+ software project should not have that risk.

        The basic VS tool set should be good to use and supported for 7 - 10 years for each version. A plethora of loosely supported and likely to be zombie or dead in 3 year add-ins is not a good business solution.
        http://xstock.vn

      • Anonymous commented  ·   ·  Flag as inappropriate

        This is even more vital in larger project teams where we have heterogeneous systems and have to do per-developer transformations.
        ...speaking of, having per-developer (i.e. $username) transformations, would be just as important as having some actual support for this (and not just "this will be in VS, no we will use SlowCheetah, no this will be in VS, ...")

      • Jerry commented  ·   ·  Flag as inappropriate

        Agree with Fred on a plain text (key - value) pair with a path for the key. The currently complexity is a result of the path being spread out over multiple levels of nested xml tags. Json will perpetuate the nesting and the complexity.
        A simple key/value dictionary will handle accessing the config file from a .net process.

        This is much less complexity than a nested structure like xml or json.

      • Shane Courtrille commented  ·   ·  Flag as inappropriate

        So serious question here. If 8,000 votes can be completely ignored why is there even a visualstudio.uservoice.com? The SlowCheetah support that was promised resulted in a single preview release and no bug fixes or support. I assume the assumption is people should now be using VSTS/TFS Release Management but if that's the case then it's time for Microsoft to say so.

      • Fred commented  ·   ·  Flag as inappropriate

        Macro variables in config files would fix this and be easier than the other proposed solutions. Simple text replacement macro variables from a single project master macro configuration file.

        This is a single pass macro variable method with no support for nested macro variables or no support for anything more than "VARIABLE_A_PATH","TEXT FOR VARIABLE A" in the file.

        VARIABLE_A_PATH would be a multilevel path to allow for scoping - e.g., "DEVICES/SCANNERS/SCANNER_1"

        Json and other proposed schemes are mildly less difficult than .net serialized to xml config files yet will ultimately lead to the same problems as today in ~5 years.

        Give us simple comma delimited KEY <-> Value pairs in a normal text file one per line with escape characters for embedded returns, quotes, commas, line feeds anywhere in the line.

        Lowest common denominator will get 90+% of the scenarios and adding gold plating for the remaining 10% is not worth it.

        The configuration file handling part of .NET should be less than a thousands of lines of code.

        Pointing to a third party VS add in is OK for the short run but the third party VS add-in tool is not something a business customer's $1,000,000+ software project should not have that risk.

        The basic VS tool set should be good to use and supported for 7 - 10 years for each version. A plethora of loosely supported and likely to be zombie or dead in 3 year add-ins is not a good business solution.

        We spent 1 man month on a recent project writing a tool to modify multiple configuration files for other parts of our large solution. It should be easier than using a clumsy special purpose .NET searialized to XML BCL.

      • Richard Schaefer commented  ·   ·  Flag as inappropriate

        @WillBuik - Any updates on support for SlowCheetah in VS2015? The last post to the SlowCheetah project is a "preview" update.

      • Jay Turner commented  ·   ·  Flag as inappropriate

        This feature is very important to me as I have as WEB site instead of a WEB app and there is no support for transforms built in. I use SlowCheetah to address my needs.

      • shrish commented  ·   ·  Flag as inappropriate

        It is such a wonderful thing , you have the ability to transform the key, values very easily and efficiently.
        Please continue this, we all want it.

      Feedback and Knowledge Base