It’s true that SharePoint team has made the SharePoint rich enough to be useful in any organization. But they have taken less care of developers (my personal opinion). Developing with SharePoint was really a nightmare in old days (in SharePoint 2007) and the situation has not been changed that much today. I reminisce the days back in 2008 when four members of our SharePoint team worked in a single SharePoint server by logging in remotely. When one developer needed to reset IIS he needed to to inform others either he may interrupt some others’ debugging session.
From that nightmare development experience of my first SharePoint project, I’ve come to a better place. Now I’ve Core I7, 8GB ram laptop. But I used to work in Virtual Machine till few months ago and I had got slower disk access in Virtual Machine. So compiling, debugging and deploying was relatively slow. I don’t want to install SharePoint in my laptops’ Windows 7 and I hope fewer (possibly fewest) people want to do so.
I’ve personally found developers who are coming to SharePoint Development from Asp.net, has got it difficult to get used to this environmental complexity. Anyway I’ve come to know about Virtual Hard Disk (VHD) solution few months ago and I’ve found it really a healthy approach. Let’s dig it deeper.
SharePoint Development in Virtual Machine
If you use Virtual Machine or any other virtual solution, you will have to realize that you will not the full processing power of your computer in SharePoint development. Even if in my Core I7 with 8GB ram, I get the development in Virtual Machine slower. If you do a lot of debugging and deployment you may loose your patience soon. However the real benefits include you can save virtual machine state. You can backup your virtual machine and restore.
SharePoint Development with Virtual Hard Disk (VHD)
Though I knew the concept of Virtual Hard Disk about a year about ago, I didn’t get interested about it till few months ago. Basically the concept if you will have a Hard Disk (virtual obviously) and you will mount that virtual disk as a drive in your computer. Then you will install OS in that drive and add that OS in boot menu in your computer. So you will have more than one operating system in your computer but the OS will be in Virtual Hard Disk (which is a .vhd file). I’m going to describe it in details:
Create and Initialize a Virtual Hard Disk
For your information, the following option for creating VHD file from “Computer Management” is only available in Windows Server 2008 R2 and Windows 7. I’ve not explored if the option shown below is available for other operating systems.
- Open the “Computer Management” from Administrator tools and right click on the “Disk Management” and click “Create VHD” as shown below:
Figure 1: Create VHD option in disk management
- Then in the New VHD window, enter appropriate value as shown below:
Figure 2: Create new VHD settings page
- After that you will find a new disk is added as shown below:
Figure 3 New disk created for VHD
- So you have found you new VHD as new disk but the disk need to initialized. To do right click on the new disk and click initialize as shown below:
Figure 4: Initialize Virtual Hard Disk
- However when you’ll try to initialize the disk you will prompted for partition style. Its recommended MBR as shown below:
Figure 5: Create MBR partition in new VHD
- After that you will find the disk (disk 1 in above figure) online. After that create a new volume in that virtual disk as shown below:
Figure 6: Create new sample volume in Virtual (but online) disk.
- In the “New Sample Volume Wizard”, you can go with default settings and finally you will get a new drive in your computer which is virtual.
Mount a VHD and Install OS
Once you have your Virtual Hard Disk (VHD) ready you can try to install an OS in the VHD. To do so insert a Bootable CD/DVD in the CD/DVD-ROM and reboot your computer. To boot from CD/DVD make sure boot from CD/DVD enabled. I had tried to install Windows Server 2008 R2 in VHD. The process is described below:
- First, let the OS to start from bootable disk. Then when the following window comes up, press Shift + F10 to bring command prompt.
Figure 7: Windows Server 2008 R2 installation window.
- When the command prompt comes up (after press Shift + F10), type diskpart and press enter. And then type list volume and press enter to see all volumes available.
Figure 8: Use diskpart command to list volumes.
- You will find from “list volume” command that your drive letter is shifted by a letter (so, C becomes D, D becomes E and so on). Now type Select vdisk file=”VhdFilePath” as shown in the image below:
Figure 9: Select VHD file command
- Now you have selected the vhd file and you need to attach the file. To do so, run the command “attach vdisk” as shown below
Figure 10: Attach Vdisk command
- You have selected vdisk and attached it. Now close the diskpart by typing Exit and then close the command prompt by typing exit again.
- Now you can click Next in the “Install Windows” wizard as shown in figure 7. As you have attached the vdisk in the system, Installer will show the vhd as an disk and you can then choose to install OS in that vhd disk.
- When the Installation options come to choose the drive where to install OS, you can choose the VHD mounted disk (as shown in the image below). However you may get an warning saying “Windows Cannot be installed…” if you select the VHD for installing OS. Ignore the warning and install the OS in the vhd mounted disk.
Figure 11: Select VHD disk to install OS
- And when the installation will be finished, you will find your another OS is added in your boot menu.
So the final output is a file (VHD file) which is used for dual boot. You can copy the vhd file and attach it to another pc.
Attach an Existing VHD to boot option
Now say you have a vhd file and you need to attach the vhd file in boot option in your pc. You can do so with command. Fortunately, there’s GUI tools available to edit boot loader options. One such tool I’ve used is EasyBCD. I’ve shown below how to add a VHD file in boot menu.
- Run EasyBCD and click “Add New Entry”.
- From the bottom click “Virtual Disk” tab and then select the vhd file from disk.
- Finally click “Add Entry” to add the entry in boot option.
The following image shows process in a glance:
Figure 12: Add VHD file in boot option with EasyBCD
Now when you will restart your pc, you will find the new newly added entry is in boot option. Be cautious while you edit your boot menu. Improper editing of boot menu may fail your booting system.
Conclusion
If you are working with SharePoint frequently (as I do), you need to care about every minutes you are loosing for working in Virtual Environment. Since few months ago I had used Virtual Environment in my powerful laptop (Core-i7, 8GB RAM). However, disk access in VM environment is slow and as Visual Studio performance is somehow related to disk access (as during build a lot of disk read/write access operations are performed) so finally performance was a major problem.
Now I’ve moved my work to VHD and I’ve two VHD files (one for SharePoint Foundation and another is for SharePoint Server). I’ve three OS in my boot options: Windows 7 (installed with my laptop), SharePoint Foundation and SharePoint Server. I can remove any boot option from my boot menu any time with EasyBCD. And most of all, with VHD option, I get the full power of my laptop. If you guys have doubt about VHD option, I’ll ask you to give VHD option a try and I do believe you will like it. You will have to like it. FYI, I’m not a marketing guy anyway so maybe it’s hard for me to convenience you.
Please post your feedback.