Update on Outlook.Sync
Got a lot done on the project Thursday and Friday night, though I was out of town Saturday and Sunday, so didn't get anything done then. But, it is working! I've only got support for appointments right now because I figured it would be the most used and complicated. The web service right now only has XML support, but I'll be adding SQL Server soon. All I really have left is adding contacts and tasks to it, add some sort of user security, adding in a “do not sync” option for items, and do some sort of configuration panel.
The “do not sync” option was suggested and it had crossed my mind as well. I don't really need to know all of my work tasks at home, so I wouldn't want to send them. It appears on the detailed information page as a button on the toolbar. Click it, it'll mark it to not sync, and the button will be depressed.
Going to need a configuration panel for setting the security options and the location of the webservice. Problem is, I think add ins to the configuration screens have to be ActiveX controls, so I'll have to look into that some more.
Ended up using SOAP for the web service instead of XML-RPC. XML-RPC.NET was having a problem serializing the classes, and I didn't really want to change them to structs, so I tried out just a SOAP service and it was able to transfer them with no problem. Don't know which is “better“, SOAP or XML-RPC, but my main is that It Works For Me(tm).
Probably the biggest pain Friday night was getting recurring items to work right. When it was creating a brand new item in Outlook, it was always marking it recurring, even though it wasn't. Eventually figure out that when you create an item, it marks it recurring (or creates a recurring pattern) after you save it, so you have to save it, clear the recurring pattern, then save it again. Another pain was getting recurring items to transfer right. They were always coming back wrong and often times locking up when adding them. I was just setting all of the properties for the recurrence pattern and eventually realized I maybe only want to do the ones particular to the type. Bingo. Also, found that you don't need to set everything like start time, end time, and duration. You should just set the start time and duration, because it'll then calculate the end time and if you try and set it, it could bomb.