Search code examples
development-environmentvirtualization

needed : Program for easily switching developer environment


This might be the wrong forum, but its filled with so many smart people so someone might know a solution.

One of my customers has given me several assignments that require a quite similar yet wery different development setup (different versions of class-libraries and such) and the problem is that each time I need to switch between the projects I need to do a lot of configuring to get the compilation to work and not include wrong versions of tools used. If I dont get it right there might be a lot of cleanup afterwards.

It takes me at least an hour to switch projects. Often several.

Now I realize that the customer has an issue with a lot of branching in their setup and they are working on that, but thats a long process.

So.. My question is. Is there some tool that allows me to take "snapshots" of working project-environments and switch between them?

I'm working on windows.


Solution

  • There are many options. One of them is virtualization: running an entire operating system on top of your operating system. It will emulate a fake hard drive, fake network card, etc. This will run an entire desktop 'in a box'.

    In the last years containerization is very popular: running a separate environment (file system, OS configuration) but leaving the heavy stuff to the host (in your case, Windows) such as networking, hardware, etc. This is geared towards running a single application (though this is flexible) 'in a box'.

    In your case, since you need to encapsulate an entire development environment, it would seem to be best to go with a virtual machine.

    A no-cost solution is Virtualbox. Paid alternatives such as VMWare may offer better usability, performance or features.

    If your class libraries are in a specific location, you could containerize the compiler: you work on your PC, then build inside of a 'box' with its own environment. Docker is often used.

    Depending on what language you are programming in, there may be a specific solution. Python has VirtualEnv, for example.