tldr; Shared directory sym links under windows for VMware Fusion
At my new work, it is mostly a Mac shop. And since I develop with a few tools that are Windows only, I needed a solution to cope with my needs. Dual boot/bootcamp wasn’t an option in no way did I want to be constantly restarting my system, and I also doubt that bootcamp drivers were even available for my Mac with retina display.
I could have gone with VirtualBox, my trusted VM solution of choice, for many years… but instead I had done some more research into the matter and discovered that VMware Fusion was a very specific but powerful solution. It is also a commercial product. Retailing just under the $50 mark, it isn’t terribly expensive for what you will be getting. And shadows in comparison to the cost of the Windows OS I would be needing to purchase as well.
I went the VMware Fusion route and have been exceedingly pleased. This product is not an end-all for any of my virtualization needs, VirtualBox will remain my vm of choice for Linux based hosts… But the performance and flexibility of VMware is smooth and beautiful, it provides better hardware drivers to things like the graphics card and it will run with Windows Aero enabled without even blinking an eye. Full screen or in Unity (interlaced / seamless) mode it works great.
One hurdle I had to overcome was shared directories.
Mapping a directory via conventional means didn’t work. I am a developer, so when using a source code compiler, it tends to be incompatible with network paths. Often it attempts to resolve it or use .bat scripts which cannot cope with network paths. So the solution is to map a network path to a local directory using a symlink under windows.
mklink /d “C:\Users\andy\Repositories” “Z:\andy On My Mac\Documents\Repositories”
The above command is an example of something I have used to resolve such an issue. The only downsides is that the IDE doesn’t pickup external changes automatically. If you change something outside of the IDE, you must refresh the directory. Not a big deal, since its the click of one button and changes are found. The other downside is compile time. What would normally be a 10 or 15 second compile turns into a 20 to 30 second compile. Nearly double. This is believed to be because it must loop through a virtual network adapter to give it the network-like features. There are ways around this as well, my IDE has a ‘bridge’ feature to allow compiling on the host, but I haven’t bothered to set that up yet because even though there is a slightly longer delay, the system works very well and is very stable.