Интерфейсы (в основном) совместимы в пространстве имен / класса / члена USAGE, но вы должны использовать правильную версию API для правильной версии SharePoint. Вы также должны учитывать, что в WSS2 / SPS2003 по умолчанию используется .NET1.1.
Мое решение для этого состоит в том, чтобы использовать MSBEE и некоторые ниндзя MSBUILD перемещаются, чтобы выплюнуть две версии из вашего исходного кода.
Первый предназначен для .NET2 и ссылается на Microsoft.SharePoint.dll v12 (WSS3 / MOSS2007), а второй - на .NET1.1 и ссылается на Microsft.Sharepoint.dll v11 (WSS2 / SPS2003).
Его довольно просто настроить, но после этого он работает очень хорошо. Там, где у вас есть различия в коде, вы можете использовать условную компиляцию: -
#if FX1_1
// WSS2/SPS2003 specific code
#else
// WSS3/MOSS2007 specific code
#endif
Эта статья дает немного больше деталей. Это большая тема, и я собирался написать сообщение в блоге с некоторым советом.