Hurlman.Tech

/* Blogging when the NDA allows */

Decided to give the ol' blog a MUCH needed facelift; wish I could say I had anything to do with the theme, but alas - my sister got all the artistic ability.  Also took the opportunity to upgrade to BlogEngine.Net 1.5 - a solid upgrade to a very simple, straightforward blog platform.


A long time ago, when I was just starting out with SharePoint development myself, I wrote an entry that detailed setup of a SharePoint development environment – the first hurdle a new developer will face.  This is both the launch of a new effort in simple SharePoint education and a revisitation of that post, updated for the tail end of 2009.

What you’ll need:

  1. 4GB RAM, minimum.  You’re likely going to need to set up a virtual machine to house your dev environment (more on that below), and you will really want to give the VM 2GB of RAM, or the time it takes to do anything will slowly drive you insane
  2. ~20GB of free drive space.  The VM that I use every day that has everything I need to work is around 20GB in size.  The ideal case here is to have this on as fast a hard drive as you can find – I just ordered a 160GB SSD.
  3. Windows Server 2003 32 bit minimum, Windows Server 2008 R2 x64 recommended.
    • One of the idiosyncrasies of the SharePoint development environment is that you need to develop directly on a SharePoint server.  Yes, really.  There are ways around it, but you’re better off just going with the flow on this one.  You will need to set up this server on an active Windows domain – I typically make my server a domain controller, so I can control things like DNS, accounts, etc. without any need for IT approval – yet another reason to have everything inside a VM.
    • Why 2008 R2?  Why x64?  Simple – Microsoft has already announced that the next version of SharePoint will require a 64-bit SQL Server and 64-bit machine to run on.  Might as well get ready now.
  4. SQL Server 2005 minimum, SQL Server 2008 x64 recommended.  SharePoint needs a SQL database (several, actually) – it’s a black box, we can’t touch it (you’re best off forgetting it even exists), but you need it.  I don’t know if 2010 will require 2008 yet, but better safe than sorry.
  5. Microsoft Office SharePoint Server (MOSS) 2007.  Duh.
  6. Visual Studio 2008 Standard or above.  SharePoint specific add-on(s) are required.
    • There is a Microsoft official add-on, but I don’t recommend it.  It tries to do too much for you, and hides way too many details to the point where key information (the SharePoint Solution ID GUID) doesn’t even get included as part of the project, and therefore doesn’t make it into source control – yikes.
    • I recommend WSPBuilder- it adds SharePoint-specific projects to the File –> New Project dialog, and WSPBuilder-specific items to the Project –> Add Item dialog.  It also structures your project to match the structure of the MOSS “12 hive” – the directory where all of SharePoint’s files live.  Believe me when I tell you that seeing this structure from day 1 of development makes it SO much easier to understand how SharePoint deployment works, how the structure of the WSP deployment packages are built, etc.  You want this add-on.
  7. Microsoft Office 2007.  There’s lots of Office client interactivity (it IS Office Server, after all), so you’ll want the client apps there for your testing.

OK, I have all that stuff.  Now what about a VM?

If you can run a server with connected domain access without IT jumping down your throat, more power to you – but most of the time, this won’t be the case.  So, we’re going to need a VM.  Several people have already discussed the various different ways you can run SharePoint in a VM, the pros and cons, etc. so I’m not going to go too deeply into it here, so I’ll just sum up my feelings on the matter here:

  • You want a VM.  You really do.  Stop thinking that maybe you don’t need one.  You do.
  • Microsoft has stated that there is no support for 64-bit guest OS VMs under VirtualPC/Virtual Server 2005 in the near future.  This is bad, due to the 64-bit requiredness of SharePoint 2010.  If you’re starting out now, VirtualPC is out.  Of course, if you only have a 32-bit processor, then none of this matters to you, and VPC is just fine.
  • If you still need a free VM solution, check out VirtualBox from Sun (check for processor support by following these directions).  They allow 64-bit guest OS installs, and are totally free.  Free even.  I’ve been using it for my day to day development VM for a while now, and haven’t had any issues.  If you are running a client OS as your host (XP, Vista, Windows 7), then this is a pretty good was to go.
  • Virtual Server 2005.  Don’t do it.  See also: Virtual PC.  There are better alternatives for server-level hosts, like:
  • Hyper-V.  If you can run a server OS as your host, then Hyper-V is a great way to go.  Performance-wise, configuration-wise, it’s harder to do better.
  • VMWare – probably pretty good, but I haven’t used it in a long time, so I can’t give it a thumbs up or down.  YMMV.

OK, I’ve got a VM created.  Now what?

Now, we spend a whole day clicking “Next”. :)

  1. Install the server OS.
  2. Promote the server to a domain controller.
  3. Create accounts for SQL and SharePoint to run under.  I typically use SQLSrv and MossSrv respectively, though it doesn’t really matter what you call them.
  4. Run Windows Update and get all the OS patches, service packs, etc. you can get your hands on.
  5. Install SQL Server.
    • If you’re installing SQL Server 2008, you’re going to need SP2.  Ignore the compatibility warning on the initial install, just make sure to install SP2 directly afterward.
  6. Install SharePoint Server.
    • If you’re installing on Windows Server 2008 R2, you’re going to need to slipstream SharePoint Server SP2 into your install.  The Microsoft SharePoint Team Blog has details on what you need to do.
    • NOTE: DO NOT install SharePoint as a stand-alone install.  Install it as a single-server farm instead.  The stand-alone install uses SQL Server Express as a back-end, which will only slow everything down.
    • I know that there’s a million steps to the wizard – call this SharePoint Googling 101, Assignment #1 – find a walkthrough if you get confused.  You will be using Google a LOT during your SharePoint development lifetime, best get used to it now!  Pro tip: use ‘SharePoint’ as your first search term, no matter what – you always get better results that way.
    • Once the configuration starts running, go get something to eat.  Seriously – this takes a WHILE.
  7. Install Visual Studio 2008.
  8. Install the .Net Framework 3.5.
  9. Install the Visual Studio 2008 / .Net Framework 3.5 SP1.
  10. Install WSPBuilder.
  11. Install Microsoft Office 2007.
  12. Run Microsoft Update to get any Office, etc. patches you might need.
  13. Leave your VM open and running overnight so SharePoint can do all its background tasks.

Next time, I’ll try to walk you through your first project – a custom web part.


Yes, it's based on Mono.  Yes, it's based on MonoDevelop.  No, it's not open source.  There are reasons for that beyond just a Novell moneygrab (although, honestly, there's absolutely nothing wrong with Novell trying to make a buck).  According to an InternetNews article, Miguel de Icaza, VP for Developer Programs at Novell (and, well, THE Mono guy), had this to say about the lack of direct Mono support:

"Mono is a traditional .NET implementation with a just-in-time (JIT) compiler," De Icaza told InternetNews.com. "The iPhone has both a legal and technical limitation for interpreters in general, so we had to modify it."

There are a few differences in MonoTouch's .Net implementation and that of "pure" Mono - de Icaza mentioned limitations around some of the new dynamic functionality, mentioning specifically that IronPython and IronRuby aren't supported.

The Program Managers in charge of XCode over at Apple need to take a long, hard look at MonoTouch - It feels much more natural to use, has support for a modern SCM right out of the box (Subversion), and looks like it was created in the last 20 years.

However, on a personal note, this could not possibly make it any easier for me to start writing iPhone apps.  I started by reading through the "Hello iPhone" tutorial they have up on their website.  Then, I closed the browser, opened MonoDevelop, and created my first iPhone project.  This wasn't just my first MonoTouch app, but also my first MonoDevelop app in general.

I already knew about hooking up outlets to UI elements inside Interface Builder from my earlier attempts at iPhone development, so that was easy enough.  The magic came in when I went back to MonoTouch to now do something with my fancy one-button, one-label interface.  One of the primary benefits of MonoTouch is that they bring the Visual Studio "*.designer.cs" model of development to the iPhone.  For every outlet that was created and hooked up in Interface Builder, MonoTouch created a .Net property on the AppDelegate class it created on project creation. The property looks and acts just like the fields you get from Visual Studio when you add controls to a Form in the designer.  It's strongly typed to the UI element's class, and supports Intellisense (Monosense?), and the auto event delegate creation you're used to from Visual Studio, whether you know it or not.


Without even realizing what done until after I'd done it, I then just did what I've done for going on 8 years now in a .Net app - used Intellisense to find the event I needed, hit Tab to select it, and then hit Tab again to create the event handler delegate function. Lo and behold, MonoTouch went ahead and did just that. From there, it was just a matter of writing my event handler code to update the label, and I was done. Command-B to build (which seems to do a compile to .Net and then a compile to Native process), and then Command-Enter to run my app in the iPhone simulator app. Tapped my button, my label updated, and all was right with the world.

So, with the test drive out of the way, I decided to just from a button & label app to a UITabController driven MenuNavigation detail app.  Controllers within Controllers - no baby steps here.  Helpfully, the MonoTouch project's default AppDelegate class includes a comment on how to point your app's main Window to the appropriate UIView to load on program launch.  So far, I've got my UITabController's root view loading, and my tabs are... tabbing.  Not much of anything on the tabs yet - but hopefully I can take care of that soon enough.

MonoTouch is free for Personal use, but does not allow you to deploy your app to an actual device.  The Professsional version is $399 and allows you to deploy to your own provisioned devices or package your app for sale on the App Store.  There's also Enterprise apps that start at $999, and allow you to deploy Enterprise-provisioned devices - I'll probably never see that, but there's a good chance I'll be picking pu the Pro version just as soon as my first app is ready.

Me.  Considering giving Novell money for something I actually find incredibly useful.  Record lows being recorded in Hell today for sure.


The other day, a coworker and I got to talking about the various technologies that Just. Keep. COMING. that we don't know, and have exactly 0.000 minutes in the day in which to learn them.  This list includes:

  • Silverlight
  • WPF in general, really
  • Workflow Foundation
  • ASP.Net MVC
  • HTML 5
  • Powershell
  • Damn near anything that doesn't run on a Microsoft platform

Missing from this list are things that we work with every day but sould stand to know more about, like Javascript, CSS, and several of the SharePoint features that, through no effort of my part, I've not yet had a serious paying project for, such as the BDC, extensive search modification, and so on.

What kills me more often than not is when I stumble across some guy's (or girl's) blog that is just ALL ABOUT one of said listed technologies, and I get this feeling that I REALLY need to step up my game in tech XYZ because MAN that's the FUTURE.  Then, I get over it - it's enough work to keep up with what I need to know to keep the paychecks rolling in.


There is nary an error message that send shooting pain through a VPN user's spine than "Reason 422: Failed to enable Virtual Adapter".  There are too many reasons, too many ways it can be fixed.  The error might as well say "Bad thing - dunno." Well, after I installed VirtualBox onto yet another Windows 7 release candidate machine, my VPN client no longer worked, Reason 422 just laughing at me.

I tried rebooting.  No dice.

I tried unchecking the VirtualBox networking driver on the VPN adapter.  Nothing.

I tried removing VirtualBox.  No good.

So, I though I'd try to treat the Cisco VPN client like the fragile little primadonna that it is, and I have everything working again.

  1. Uninstall VirtualBox
  2. Uninstall the Cisco VPN client
  3. Install VirtualBox
  4. Install the Cisco VPN client

Reboot when the software installs and uninstalls tell you to.


About the author

Greg Hurlman
Software Development Manager at Avanade, mostly focused on SharePoint related projects these days.