2

我编写了一个使用 2007 API 遍历 SharePoint 对象模型的解决方案。现在我也需要支持 SP 2003。做这个的最好方式是什么?

是否可以/推荐使用 2007 api 来访问 2003 SharePoint 场?

如果我使用 2007 api,我是否必须使用已弃用的类来(例如)引用配置数据库,还是使用 2007 类,例如 SPFarm?

还是我使用 SP 2007 的 2007 API 和 SP 2003 的 2003 API ...?问题在于两者都使用相同的命名空间和类名。所以它可能会变得混乱。(除非我使用别名来引用不同的命名空间?)

4

2 回答 2

3

据我所知,2007 API 和 2003 API 不兼容。所以是的?您将需要同时实现这两者。

我可以建议有接口 ISharePointAPI 和两个实现 SharePoint2007API 和 SharePoint2003API。这个实现甚至可以打包到不同的程序集,所以你不会有引用地狱:)。这也将保护您免受 2010 API 更改的影响,因为您需要实施 SharePoint2010API ...

于 2009-06-24T10:45:01.827 回答
1

这些接口(大部分)在命名空间/类/成员 USAGE 中兼容,但您必须为正确版本的 SharePoint 使用正确版本的 API。您还必须考虑到 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

这篇文章提供了更多细节。这是一个很大的话题,我一直想写一篇带有一些提示的博客文章。

于 2009-06-25T12:39:23.257 回答