Astuce du jour : l'attribut ActivateOnDefault des Features

Si vous avez déjà développé des Features, vous êtes très certainement passé par l'édition de son fichier de définition : Feature.xml. Si ce n'est pas le cas ou si vous voulez vous rafraîchir la mémoire, voici les pointeurs dans le SDK :

Pour en revenir au sujet du jour, il existe un attribut optionnel "ActivateOnDefault" qui permet d'activer automatiquement la fonctionnalité. Or, ce qu'il faut savoir c'est que :

  • ce paramètre est à "true" par défaut
  • il est pris en compte pour les fonctionnalités de scope "Farm" (ferme) et "WebApplication" (application web) mais pas pour celles de scope "Site" (collection de site) et "Web" (site web)

Ce qu'il faut en retenir c'est qu'en omettant l'attribut ou en le mettant à "true" :

  • lorsque vous développez une fonctionnalité de type "farm" celle-ci sera donc automatiquement activé une fois déployée. Plutôt logique et souvent attendu.
  • lorsque vous développez une fonctionnalité de type "webapplication", celle-ci sera activée automatiquement pour toutes les nouvelles applications web créées. Attention car dans ce cas, ce n'est que rarement voulu. On désire la plupart du temps réaliser une fonctionnalité qu'on activera si nécessaire et cas par cas (application par application).  En revanche, les applications déjà créées avant le déploiement de votre fonctionnalité ne seront pas impactées, uniquement les nouvelles.

Un cas concret pour le 2ème cas pour vous montrer l'effet quelque peu pernicieux de cet attribut : le développement d'une fonctionnalité et son événement permettant de modifier le fichier de configuration.

Votre fonctionnalité est packagée, vous la déployez, l'activez pour une de vos applications web, et... tout marche comme vous le voulez. Super!  Sauf que toutes les prochaines applications web qui seront créées activeront votre fonctionnalité et verront leur fichier de configuration modifié. Et là... c'est (parfois) le drame !

Au final, dommage qu'il soit facultatif et surtout que sa valeur par défaut soit à "true" (au moins pour les applications web).

Gat qui va se désactiver pour le WE (GTA IV is coming ! :D)

 

Commentaires

Laisser un commentaire





Validation Image CAPTCHA