If you need to dual boot, you can. I think people have already pointed out clonezilla which is a tool that I love. But I'm in school programming assembly using MASM. I found multiple options for this.
A container running msvc via wine utilizes msvc compilers and works with cmake. See here
Or using winapps. Technically, it runs a VM within a container. The part that is cool about winapps is that it uses FreeRDP to basically accomplish what Microsoft RemoteApp used to, it makes it appear as if the program is just running on Linux without any major changes.