2009-06-24 12 views
2

SharePoint APIを使用してSharePointオブジェクトモデルをトラバースするソリューションをコーディングしました。今私はSP 2003もサポートする必要があります。これを行う最善の方法は何ですか?SharePoint API:2003 vs 2007

2007 SharePointファームへのアクセスに2007 apiを使用することは可能ですか?

2007 apiを使用している場合、廃止予定のクラスを使用して構成データベースを参照する必要がありますか、SPFarmなどの2007クラスを使用しますか?

または、SP 2007用の2007 APIおよびSP 2003用の2003 APIを使用しますか。この問題は、両方とも同じ名前空間とクラス名を使用することです。だからそれは乱雑になることができます。 (異なる名前空間を参照するためにエイリアスを使用している場合を除いて)

答えて

3

私が知っている限り、2007 APIと2003 APIは互換性がありません。あ、はい?両方を実装する必要があります。

インターフェイスISharePointAPIとSharePoint2007APIとSharePoint2003APIの2つの実装を持つことをお勧めします。この実装は、異なるアセンブリにパッケージ化することもできるので、参照地獄はありません:)。これは、2010年のAPI変更からSharePoint2010APIを実装する必要があるため、あなたが必要とするものを保護します。

+0

Mm、私はそれを恐れていました。幸いなことに、COM環境ではソリューションが動作するため、既にインターフェイスが指定されています。 – Ries

1

インターフェイスは、名前空間/クラス/メンバUSAGEで互換性がありますが、正しいバージョンを使用する必要があります。正しいバージョンのSharePointのAPI。また、WSS2/SPS2003ではデフォルトで.NET1.1が使用されていると考える必要があります。

私の解決策はMSBEEで、ソースコードから2つのバージョンを吐き出すMSBUILD ninjaの動きがあります。

最初のターゲットは.NET2で、Microsoft.SharePoint.dll v12(WSS3/MOSS2007)、2番目のターゲットは.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

+0

私はまた、2003年のクラスが2007年のAPIでも利用可能であっても、サポートされていないことを示す例外をスローするメソッドもあります。だから私たちは、共通のインターフェースの背後にある異なる実装に向かっています。各実装は、それぞれのバージョンのAPIを参照します。 – Ries

関連する問題