.net SharePoint API:2003与2007

.net SharePoint API:2003与2007,.net,sharepoint,api,sharepoint-2007,sharepoint-2003,.net,Sharepoint,Api,Sharepoint 2007,Sharepoint 2003,我编写了一个使用2007 API遍历SharePoint对象模型的解决方案。现在我还需要支持SP 2003。最好的方法是什么 是否可以/建议使用2007 api访问2003 SharePoint场 如果我使用2007 api,我必须使用不推荐使用的类(例如)引用配置数据库,还是使用2007类,例如SPFarm 或者我是否使用2007 API for SP 2007和2003 API for SP 2003。。。?问题是两者使用相同的名称空间和类名。所以它会变得一团糟。(除非我使用别名引用不同的名

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

是否可以/建议使用2007 api访问2003 SharePoint场

如果我使用2007 api,我必须使用不推荐使用的类(例如)引用配置数据库,还是使用2007类,例如SPFarm


或者我是否使用2007 API for SP 2007和2003 API for SP 2003。。。?问题是两者使用相同的名称空间和类名。所以它会变得一团糟。(除非我使用别名引用不同的名称空间?

据我所知,2007 API和2003 API不兼容。那么是吗?您需要同时实现这两个功能

我可以建议使用接口ISharePointAPI和两个实现SharePoint2007API和SharePoint2003API。此实现甚至可以打包到不同的程序集,因此您将没有参考hell:)。这也将保护您免受2010年API更改的影响,因为您需要的是实现SharePoint2010API…

这些接口(大部分)在命名空间/类/成员使用中兼容,但您必须使用正确版本的API才能获得正确版本的SharePoint。您还必须考虑WSS2/SPSS2003默认使用.NET1.1。

我的解决方案是使用和一些MSBUILD忍者从源代码中吐出两个版本

第一个目标是.NET2并引用Microsoft.SharePoint.dll v12(WSS3/MOSS2007),第二个目标是.NET1.1并引用Microsoft.SharePoint.dll v11(WSS2/SPS2003)

这是一个相当faf的设置,但工作后,非常好。如果存在代码差异,则可以使用条件编译:-

#if FX1_1
   // WSS2/SPS2003 specific code
#else
   // WSS3/MOSS2007 specific code
#endif

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

Mm,我很害怕。幸运的是,我已经指定了一个接口,因为解决方案在COM环境中运行。感谢您的输入。我认为我们无论如何都会将.NET3.5作为这两种产品的目标(出于其他原因)。因此,2003年和2007年用户必须安装.NET3.5才能使用我们的解决方案。我还注意到,尽管2003类在2007 api中仍然可用,但有些方法抛出异常,告诉您它不受支持。因此,我们将在一个公共接口后面进行不同的实现。每个实现都引用各自的api版本。