【问题标题】:SharePoint API: 2003 vs 2007SharePoint API:2003 与 2007
【发布时间】:2010-11-05 11:19:29
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: .net sharepoint api sharepoint-2007 sharepoint-2003


    【解决方案1】:

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

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

    【讨论】:

    • 嗯,我害怕那个。幸运的是,我已经指定了一个接口,因为该解决方案在 COM 环境中运行。
    【解决方案2】:

    接口(大部分)在命名空间/类/成员 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
    

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

    【讨论】:

    • 感谢您的意见。我认为无论如何(出于其他原因)这两种产品我们都将针对.NET3.5。所以 2003 和 2007 用户必须安装 .NET3.5 才能使用我们的解决方案。我认为他们将能够忍受这一点。
    • 我还注意到,即使 2003 的类在 2007 api 中仍然可用,但有些方法会抛出异常,告诉您它不受支持。所以我们要在一个通用接口后面实现不同的实现。每个实现都引用每个自己的 api 版本。
    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    • 2011-01-18
    • 2010-10-02
    • 2011-03-22
    相关资源
    最近更新 更多