SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente?

Esta pregunta es la que me vino a la mente ante una duda que me plantearon hace unos días…mi respuesta fue como en otras ocasiones: “se tiene que poder de alguna forma”…y dicho y hecho, las características se pueden activar de forma programática tanto en el modelo de objetos (MO) en servidor como en cliente:

Si pensamos como activar una feature con el MO Cliente .NET Managed, tendremos que recurrir a la clase FeatureCollection,que nos permite acceder a la colección de características activas en un sitio y activar features existentes que no estén activas de acuerdo al siguiente código:

   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6:  

   7: //MO Cliente -> .NET Flavour

   8: using MO_NET = Microsoft.SharePoint.Client;

   9:  

  10: namespace SPFeatureCOMActivation

  11: {

  12:     class Program

  13:     {

  14:         const string sSiteUrl = "http://demo2010a:100/sites/SCR";

  15:         static void Main(string[] args)

  16:         {

  17:             ActivarFeature();

  18:             Console.ReadLine();

  19:         }

  20:         static void ActivarFeature()

  21:         {

  22:             try

  23:             {

  24:                 using (MO_NET.ClientContext ctx =

  25:                     new MO_NET.ClientContext(sSiteUrl))

  26:                 {

  27:                     MO_NET.Web wSite = ctx.Web;

  28:                     MO_NET.FeatureCollection fcFeaturesCollection = wSite.Features;

  29:                     Guid guFeatureGuid = new Guid("bc08fd10-39b5-4a54-b1d9-2eb0aaac47d8");

  30:                     fcFeaturesCollection.Add(

  31:                         guFeatureGuid, true, MO_NET.FeatureDefinitionScope.Site);

  32:  

  33:                     ctx.Load(fcFeaturesCollection);

  34:                     ctx.ExecuteQuery();

  35:  

  36:                     Console.WriteLine("Características instaladas en el sitio: {0}", 

  37:                         fcFeaturesCollection.Count.ToString());

  38:                     foreach (MO_NET.Feature fFeature in fcFeaturesCollection)

  39:                         if (fFeature.DefinitionId == new Guid("bc08fd10-39b5-4a54-b1d9-2eb0aaac47d8"))

  40:                             Console.WriteLine("Feature {0} localizada", fFeature.Tag);                        

  41:                  //       Console.WriteLine("Feature ID: {0}", fFeature.DefinitionId);

  42:                 }

  43:  

  44:             }

  45:             catch (MO_NET.InvalidQueryExpressionException ex)

  46:             {

  47:                 Console.WriteLine("Error: {0}", ex.Message);

  48:             }

  49:             catch (MO_NET.ClientRequestException ex)

  50:             {

  51:                 Console.WriteLine("Error: {0}", ex.Message);

  52:             }

  53:             catch (MO_NET.PropertyOrFieldNotInitializedException ex)

  54:             {

  55:                 Console.WriteLine("Error: {0}", ex.Message);

  56:             }

  57:             catch (MO_NET.ServerUnauthorizedAccessException ex)

  58:             {

  59:                 Console.WriteLine("Error: {0}", ex.Message);

  60:             }

  61:             catch (MO_NET.ServerException ex)

  62:             {

  63:                 Console.WriteLine("Error: {0}", ex.Message);

  64:             }

  65:             catch (Exception ex)

  66:             {

  67:                 Console.WriteLine("Error: {0}", ex.Message);

  68:             }

  69:         }       

  70:     }

  71: }

Como veis, a partir del GUID de la feature resulta muy sencillo su activación sin más que utilizar el método Add() del objeto FeatureCollection definido.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

4 comentarios sobre “SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente?”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *