This Blog

Syndication

Search

Tags

Community

Email Notifications

Archives

Enlaces Recomendados

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.

Published 18/9/2011 23:08 por Juan Carlos González Martín

Comparte este post:

Comentarios

# re: SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente?@ Monday, September 19, 2011 11:32 AM

genial, al final no era tan difícil :)

Mario Cortés Flores

# re: SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente?@ Monday, September 19, 2011 11:39 AM

Si esta parte es la facil, lo que falta es activar la solución SandBox y la forma que hay es un poco ñapa...bastante ñapa diría yo

Juan Carlos González Martín

# SharePoint 2010: ¿Se pueden activar features con el modelo de objetos en cliente? (II)@ Wednesday, March 7, 2012 11:37 PM

Esta pregunta me hacía hace unos meses , sobre todo tratando de ver como automatizar el despliegue y

Blog del CIIN

# ¿Se pueden activar features con el modelo de objetos en cliente?@ Wednesday, March 7, 2012 11:48 PM

Esta pregunta me hacía hace unos meses , sobre todo tratando de ver como automatizar el despliegue

Blog técnico de Office 365