Question

J'ai codé une solution qui utilise l'API 2007 pour parcourir le modèle d'objet SharePoint. Maintenant, je dois également prendre en charge SP 2003. Quelle est la meilleure façon de faire cela?

Est-il possible / recommandé d’utiliser l’API 2007 pour accéder à une ferme SharePoint 2003?

Si j'utilise l'API 2007, dois-je utiliser les classes obsolètes pour (par exemple) référencer une base de données de configuration, ou dois-je utiliser les classes 2007, telles que SPFarm?

Ou est-ce que j'utilise les API 2007 pour SP 2007 et 2003 pour SP 2003 ...? Le problème, c'est que les deux utilisent les mêmes espaces de noms et noms de classe. Donc, ça peut devenir compliqué. (Sauf peut-être si j'utilise des alias pour faire référence aux différents espaces de noms?)

Était-ce utile?

La solution

Pour autant que je sache, les API 2007 et 2003 sont incompatibles. Donc oui? vous devrez implémenter les deux.

Je peux suggérer d'avoir l'interface ISharePointAPI et deux implémentations SharePoint2007API et SharePoint2003API. Cette implémentation peut même être empaquetée dans différents assemblys, vous n'aurez donc pas d'enfer de référence :). Cela vous protégera également des modifications apportées à l'API de 2010, car vous aurez besoin d'implémenter SharePoint2010API ...

Autres conseils

Les interfaces sont (généralement) compatibles dans un espace de nom, une classe ou un membre, mais vous devez utiliser la bonne version de l'API pour la version correcte de SharePoint. Vous devez également considérer que, par WSS2 / SPS2003, utilise .NET1.1 par défaut.

Ma solution à ce problème consiste à utiliser MSBEE et certains MSBUILD. ninja se déplace pour cracher deux versions de votre code source.

La première cible .NET2 et référence Microsoft.SharePoint.dll v12 (WSS3 / MOSS2007) et la seconde cible .NET1.1 et référence Microsft.Sharepoint.dll v11 (WSS2 / SPS2003).

C’est un peu un faf à installer mais ça marche très bien après ça. Si vous avez des différences de code, vous pouvez utiliser la compilation conditionnelle: -

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

Cet article donne un peu plus de détails. C’est un sujet important et j’ai l’intention de rédiger un article de blog avec quelques astuces.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top