IComparable implementation for a class representing a version
You could change it to reduce the "arrow style" like so  

public int CompareTo(object obj)
{
   if(obj == null) { return 1; }

   var updateId = obj as UpdateId;
   if (updateId == null) 
   {
       throw new ArgumentException("Object is not an UpdateId");
   }

   int compareResult = this.Year.CompareTo(updateId.Year);
   if (compareResult != 0) { return compareResult; }

   compareResult = this.ReleaseNumber.CompareTo(updateId.ReleaseNumber);
   if (compareResult != 0) { return compareResult; }

   return this.Revision.CompareTo(updateId.Revision);

}


which will save you some horizontal spacing and some not needed variables, because they all meant the same so I changed them to compareResult.