2009-06-24 99 views
2

我編寫了一個使用2007 API來遍歷SharePoint對象模型的解決方案。現在我也需要支持SP 2003。做這個的最好方式是什麼?SharePoint API:2003 vs 2007

是否有可能/推薦使用2007 API來獲取訪問2003 SharePoint場?

如果我用的是2007年的api,我必須使用已棄用的類(例如)引用配置數據庫,還是我使用2007類,如SPFarm?

還是我使用SP 2007 2007 API和SP 2003,2003年API ...?與此問題是,兩者都使用相同的名稱空間和類名稱。所以它可能會變得混亂。 (除了可能,如果我使用別名來引用不同的命名空間?)

回答

3

據我所知道的2007 API和2003 API不兼容。所以是的?你將需要實現兩者。

我可以建議有接口ISharePointAPI和兩個實現SharePoint2007API和SharePoint2003API。這個實現甚至可以打包到不同的程序集,所以你不會有參考地獄:)。這也將保護您免受2010年API更改,因爲您將需要實施SharePoint2010API ...

+0

嗯,我很害怕那個。幸運的是,我已經有了一個指定的接口,因爲解決方案在COM環境中運行。 – Ries 2009-06-24 11:02:33

1

接口(大部分)在名稱空間/類/成員用法中兼容,但您必須使用正確版本的正確版本的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給出了一個更詳細一點。它是一個很大的話題,我一直有意用一些提示寫博客文章。

+0

感謝您的意見。無論如何,我認爲我們將針對.NET3.5(出於其他原因)這兩種產品。因此,2003和2007用戶將不得不安裝.NET3.5來使用我們的解決方案。我認爲他們將能夠接受這一點。 – Ries 2009-06-26 10:12:41