Pages

Mac: VMWare Fusion and Visual Studio 2008 Express Edition

I'm traveling right now and don't have access to all of my normal development tools but since I do have my handy MacBook I figured I would try a little experiment. Here's what I have set up right now:

Windows XP SP2, fully patched

I allocated 1GB of RAM to the VM for Windows XP and it worked great - plenty of headroom to run applications. I've said it before but it bears repeating since I know based on the comments that a few people that are Windows folks are considering trying out a Mac:

Windows runs really well, even on my lowly little MacBook. I did bump my memory up to 4GB, which I think is really important, but standard Windows applications (not games mind you - not even attempting that on a MacBook) work great.

To maximize screen real estate - really important on a MacBook - I run Windows XP in full screen mode. This still allows me to access spaces easily. 

I was able to get Visual Studio 2008 Express installed without any problems. Early in the setup VS08 rebuilds much of it's library, so it's a chance to see the impact it has while running full bore. On my machine during peak compile times the CPU ran a steady 50% utilization. I jumped into other Mac applications, including Safari while it was working and experienced no noticeable degradation in performance.

Once I had VS08 up and running it ran really smoothly. I didn't stress it too much - just a couple of browser based applications - but it was able to load them up in IE and I could run through the debugger just fine. During these minimal tests the CPU barely broke a sweat.

To give you a sense of what's possible to run on a little MacBook, here I am using Spaces to run NetNewsWire, iTunes, iChat, Safari and finally a full screen Windows XP (lower right) with Visual Studio 2008 Express Edition loaded and running.

What's great about this is that I can rapidly switch between environments. Windows performance - even in a VM - is snappy. I notice a little window "tearing" when dragging windows quickly. I think that's probably a function of the way graphics are handled on a MacBook - no dedicated video card. The MacBook Pro does have a dedicated video card so it may not have this issue.

One thing I have noticed with the MacBook is that I do take a pretty decent CPU hit when viewing flash based sites. It's not nearly as bad with QuickTime video (interesting, huh?). When I speak to friends that have iMacs or Mac Pros they don't see any CPU hit when watching Flash based stuff.

Based on the results I've had I think I'm going to try loading up VS05 with my current product build into a VM and see what the performance is like. My project has gotten pretty large and uses some aftermarket controls for UI, so it will be a good test. I also am debugging my application using SQL Server Compact Edition so it's a pretty tall order.

On my Windows XP development box - a beast of a machine with an EVGA 680i mobo, Intel QX6700 processor, EVGA 8800GTX video and matched Corsair memory I take a significant CPU hit when VS05 decides to refactor my code while using certain design surfaces. 

I have no doubt the MacBook will also strain under that burden but it will be interesting to see if it is still useable when that happens.

26 comments:

Sean said...

I really enjoyed this. I am a student who plans on developing for a living and I currently do all of my development on my PC which has similar specs to yours. I didn't have the time to load VS05 onto my Macbook if it was not going to respond properly. I was already too aware of the issues that Visual Studio can present on PC's, let alone in a virtual session on a Macbook.

My Macbook only has 1 Gb of memory still, so it would be lacking in that department. I will try this out and let you know how it goes.

Robert Mills said...

I have been waiting for a post along these lines. I am a student also and I live developing in VS. I have always been interested in just trying a Mac but was concerned about not being able to use VS. Ever since I saw your blog post from Digg, I have been more and more convinced that it's easy to do and you get lots of flexibility. Hoping in the coming weeks I will have the money together to go ahead with a purchase.

David Alison said...

@sean: I would highly recommend that you bump that memory up to 4GB. It's really cheap now and very easy to do.

@robert: If you can pull it off a MacBook Pro will run a little cooler since the CPU is not hit nearly as hard, though with 4GB of memory a MacBook is very capable.

Charles said...

Hi David, like many reading your blog, i stumbled across it on digg, and have read all of your posts so far. For the first time i have started to use rss to keep track of your entries..... In regards to Fusion/parrallels, i'm interested that you allocated memory to the application.... in my experience, i have read (about parallels) that it was best not to change the default allocation, as dynamic memory addressing would automatically provide memory when needed.... not sure if you have, but this could be worth a look into. I've just checked VmWare's site but couldn't find anything definitive for you.

In regards to virtualisation you seem hesitant that everything should work well..... Don't forget that there is no emulation going on here, the software is calling the hardware near directly, so you should only see a small loss of power at worst case (3% or so). I've done alot of testing using 3D software through parralels/VMWare and the sped is just incredible.. no noticeable hits in speed at all. As you are suggesting you are going to do... Try and break it !!! by throwing everything you've got at it.....
Enjoy the macbook !!! Cheers, Charlie.

David Alison said...

@charles: I'm not sure if VMWare dynamically allocates the memory for Windows - pretty sure it doesn't. On boot Windows establishes the memory available to it. If you look at Task Manager it will tell you how much memory is available to Windows - and it's pretty much what I defined inside of Fusion.

My biggest concern with running Visual Studio in a VM is the way VS creates an internal web server for debugging. I'm a little concerned with how port management will work; my knowledge of TCP/IP ports and usage is rudimentary - hence my need to prove it to myself that it will be OK.

Thanks for the comments on the blog - glad you are enjoying it!

Si-man said...

Hi another great article.

I also switched to VMware (tried parallels but it was unreliable) mid last year. I have VM sets for each client often I run 5 or more VM's at any one time. I also started off with MACBook as my first steps after 25 years of PC's.. now progressed onto a MAC Pro!

One downside I found was that switching between OS X and XP all day meant that I was always getting the keyboard short cuts wrong, I now use autohotkey on the VM's to remap the cntrl key and doublecommand on the MAC so I can do cntrl-C/V/Z etc where ever I am :-)

I also find it great that I can copy a VM over to a another machine to take home or to hand the whole project to another developer is really easy.

For me the move to MAC and VMWare gave me portability, reliable hardware, loads of ram and touch of style ... at last!

David Alison said...

@si-man: I would really like to get a Mac Pro to effectively replace the Windows XP machine but I've got a little too much on my plate at the moment. Hopefully soon though. I can only imagine what a Quad core system could do; I'm already getting excellent performance from a little MacBook.

Gary Lacey said...

fusion has been bogging my machine down and my blackberry wont sync. anyone try out parallels? my prof swears by it

Eric said...

Hi David,

Interesting post. I am trying to do the same thing you are and was wondering how much RAM you allocated for your virtual WinXP instance in VMWare Fusion? 1GB, 2GB? And did you mess around at all with the virtual memory/page file settings inside the guest WinXP instance?

David Alison said...

@Eric: I am now dedicating 2GB of RAM to the instance and on the Mac Pro I've added in access to a second processor. I never played with the settings inside the Windows XP instance, though I didn't really feel the need to either.

Gabor said...

David, have you had any trouble running the Visual Studio 2008 debugger? I'm using VMWare Fusion but unable to debug the simplest Visual Basic project because the Windows XP just stops working. After sending many alt+ctrl+del messages it maybe comes to life maybe not. If I don't use the debugger just simply run the project there's no problem at all. Any hints?

David Alison said...

@Gabor: I haven't seen that one. When I was actively using the debugger it was in Visual Studio and doing a .NET web application. The interactive debugger worked fine for me, though for my development work I was using Visual Studio 2005, not 2008.

Most likely it's a corrupted install of VS that's the issue. You may want to try an uninstall / reinstall of VS 2008.

Gabor said...

@David, thanks for the advice, uninstalling the Visual elements (Basic, Web Developer 2008) and putting them back solved my problem.

Great blog, anyway!

Anonymous said...

hi
i have a question about mac
can we install windows server on a mac computer?

David Alison said...

@Anon: Yes, I believe you can install Windows Server in a VMware instance, though you're probably better off finding that out directly from VMware.

Anonymous said...

While debugging using VS2005 I normally use the F keys i.e. F10 to tep over and F11 to step into etc... but I find that I cannot do this while running VS2005 in VMWare Fusion. Do you know what I can do to enable me to use F10 and F11?

David Alison said...

@Anon: You may want to check out this thread over on StackOverflow.

Patrick Healy said...

David,

Have you tried running VMWare off of a Boot Camp partition?

I'm about to get a new MBP and am wondering whether to go VMWare+Boot Camp or just VMWare. Which do you use? If you use the combination, how often to you find yourself booting directly in to Windows instead of via VMWare? I want to spend as much time as possible on the Mac side, but the ability to boot directly into Windows is alluring...

David Alison said...

@Patrick: I don't use Bootcamp, though I wish I did have it set up that way on my Mac Pro as there are some games that would likely play well when Windows is running natively (as opposed to in a VM).

Congrats on the new MBP! Now all you need to do is convince Dan to get one ;-)

Anonymous said...

Hello,

I'm having horrific problems with Visual Studio 2008 running on Fusion 3.0. I have Visual Studio 2008 installed on a Windows Vista Enterprise virtual machine running on Fusion 3.0 on my unibody MacBook Pro which is running Snow Leopard. Anyway, whenever I try to add a reference (such as a dll) to a Visual Studio 2008 project, I get the following error: "A reference to 'C:\Users\username\Documents\Visual Studio 2008\Projects\MyProjectName\MyProjectName\bin\my.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component."

Now, this has got to do with the file system and "shared folder" settings but it happens whether I have shared folders enabled or not. It also happens when I place the dlls to be added to my project on the actual virtual machine instead of on the Mac's drive. The name of the shared folder is (\\vmware-host) (Z:) but it also happens if the share is called (\\.host)(Z:)

Has anyone encountered this issue as well? This bug actually prevents me from using Visual Studio 2008 for any coding projects which involve adding a reference to the project, and that will probably happen 90% of the time which, of course, blocks almost all developers from being able to use Visual Studio on Fusion 3.0.

Any feedback would be most appreciated.

Thanks,

Larry

David Alison said...

@Larry: That really sounds like an access rights issue. Using a Command shell can you navigate to that directory and manually create a file? Just do a "dir > text.txt". If that works then ensure that VS is operating in the same context as you when it tries to create file.

Hope that helps...

Jose Mantilla said...

I have problems, running or testing my VS08 proyects on my MacBook Pro, I'm using a vmware fusion vm running windows 7 (yes I know i'm expecting too much) the problem that I have is that everytime i try to debugg my proyect it opens safari on the mac!! and not IE on the virtual, and since is other localhost, it obviusly doesn't work.. I have to copy/paste the link on the virtual and run it on the virtual, but this is really annoying every single step of the develompent... (any suggestions??)

David Alison said...

@Jose: Wow, that is a bizarre issue. Normally the VM doesn't have any knowledge of the host environment except through the VMware Tools, and that's just for device controls.

If you try to open an HTML file locally in your Win 7 VM does it open IE 8 from within the VM? You'll want to confirm that Windows 7 has IE 8 listed as your default browser.

Jose Mantilla said...

Thanks for the fast answer David!,Yes it is a wierd problem I know, the first thing I checked was ir IE is the default browser, but since it is IE8 I have no Idea of any other setting to set, other fact that I can give is that I'm using subversion, and a set of 3 party libraries called Gizmox web.GUI, but it really drive me nuts!!

Andrea said...

David,
I have a MacBookPro running XP on VMware Fusion and VS 2008 Express.

My job can provide me with VS 2010 Pro... should I uninstall 2008 Express?

David Alison said...

@Andrea: If you have the disk space in the VM, you can leave it. At a minimum you'll want to make sure all of your existing VS 2008 Express projects will build properly in VS 2010 Pro first.