SharePoint API:2003と2007
-
10-07-2019 - |
質問
2007 APIを使用してSharePointオブジェクトモデルを走査するソリューションをコーディングしました。次に、SP 2003もサポートする必要があります。これを行う最良の方法は何ですか?
2007 APIを使用して2003 SharePointファームにアクセスすることは可能ですか/推奨されていますか?
2007 APIを使用する場合、廃止されたクラスを使用して(たとえば)構成データベースを参照する必要がありますか、または2007クラス(SPFarmなど)を使用しますか?
または、SP 2007の2007 APIとSP 2003の2003 APIを使用しますか?これに関する問題は、両方が同じ名前空間とクラス名を使用することです。そのため、面倒になります。 (エイリアスを使用して異なる名前空間を参照する場合を除く)
解決
2007 APIと2003 APIには互換性がないことを知っています。あ、はい?両方を実装する必要があります。
ISharePointAPIインターフェイスと、SharePoint2007APIおよびSharePoint2003APIの2つの実装を持つことをお勧めします。この実装は別のアセンブリにパッケージ化することもできるため、参照地獄はありません:)。必要なのはSharePoint2010APIを実装することであるため、2010 APIの変更からも保護されます...
他のヒント
インターフェースは(ほとんど)名前空間/クラス/メンバーUSAGEで互換性がありますが、正しいバージョンのSharePointには正しいバージョンのAPIを使用する必要があります。また、WSS2 / SPS2003ではデフォルトで.NET1.1を使用することを考慮する必要があります。
これに対する私の解決策は、 MSBEE といくつかのMSBUILDを使用することです。忍者はソースコードから2つのバージョンを吐き出します。
最初のターゲットは.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
この記事では、もう少し詳しく説明しています。それは大きなトピックであり、私はいくつかのヒントでブログ記事を書くつもりでした。