Compartir a través de


Tutorial: Crear un paso de implementación personalizado para proyectos de SharePoint

Al implementar un proyecto de SharePoint, Visual Studio 2010 ejecuta una serie de pasos de implementación en un orden concreto. Visual Studio incluye muchos pasos de implementación integrados, pero también puede crear los suyos propios.

En este tutorial, creará un paso de implementación personalizado para actualizar las soluciones de un servidor de SharePoint. Visual Studio incluye los pasos de implementación integrados para muchas tareas, tal como retirar o agregar soluciones, pero no incluye un paso de implementación que actualice soluciones. De forma predeterminada, cuando implementa una solución de SharePoint, Visual Studio retira primero la solución (si ya está implementada) y, a continuación, implementa de nuevo la solución completa. Para obtener más información acerca de los pasos de implementación integrados, vea Implementar paquetes de soluciones de SharePoint.

En este tutorial se muestran las siguientes tareas:

  • Crear una extensión Visual Studio que realiza dos tareas principales:

    • Define un paso de implementación personalizado para actualizar soluciones de SharePoint.

    • Crea una extensión de proyecto que define una nueva configuración de implementación. Una configuración de implementación es un conjunto de pasos de implementación que se ejecuta para un proyecto determinado. La nueva configuración de implementación incluye el paso de implementación personalizado y varios pasos de implementación integrados.

  • Crear dos comandos de SharePoint personalizados a los que llama el ensamblado de la extensión. Los comandos de SharePoint son métodos a los que pueden llamar los ensamblados de la extensión para utilizar las API del modelo de objetos de servidor de SharePoint. Para obtener más información, vea Llamar a los modelos de objetos de SharePoint.

  • Compilar un paquete de extensión de Visual Studio (VSIX) para implementar ambos ensamblados.

  • Probar el nuevo paso de implementación.

Requisitos previos

Necesitará los componentes siguientes en el equipo de desarrollo para completar este tutorial:

El conocimiento de los siguientes conceptos es útil, aunque no necesario, para completar el tutorial.

Crear los proyectos

Para completar este tutorial, debe crear tres proyectos:

  • Un proyecto VSIX para crear el paquete VSIX e implementar la extensión.

  • Un proyecto de biblioteca de clases que implemente la extensión. Este proyecto debe tener como destino .NET Framework 4.

  • Un proyecto de biblioteca de clases que define los comandos de SharePoint personalizados. Este proyecto debe tener como destino .NET Framework 3.5.

Comience el tutorial creando ambos proyectos.

Para crear el proyecto VSIX

  1. Inicie Visual Studio.

  2. En el menú Archivo, elija Nuevo y haga clic en Proyecto.

  3. En el cuadro de diálogo Nuevo proyecto, expanda el nodo Visual Basic o Visual C# y, a continuación, haga clic en Extensibilidad.

    Nota

    El nodo Extensibilidad solo está disponible si instala Visual Studio 2010 SDK. Para obtener más información, vea la sección anterior sobre los requisitos previos.

  4. En el cuadro combinado de la parte superior del cuadro de diálogo, seleccione .NET Framework 4.

  5. Haga clic en la plantilla Proyecto VSIX.

  6. En el cuadro Nombre, escriba PasoImplementarActualización.

  7. Haga clic en Aceptar.

    Visual Studio agrega el proyecto PasoImplementarActualización al Explorador de soluciones.

Para crear la extensión de proyecto

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo de la solución, después haga clic en Agregar y, a continuación, en Nuevo proyecto.

    Nota

    En los proyectos de Visual Basic, el nodo de la solución aparece en el Explorador de soluciones solo cuando se activa la casilla Mostrar solución siempre en General, Proyectos y soluciones, Opciones (Cuadro de diálogo).

  2. En el cuadro de diálogo Nuevo proyecto, expanda Visual C# o Visual Basic y, a continuación, haga clic en Windows.

  3. En el cuadro combinado de la parte superior del cuadro de diálogo, seleccione .NET Framework 4.

  4. Seleccione la plantilla de proyecto Biblioteca de clases.

  5. En el cuadro Nombre, escriba ExtensiónPasoImplementación.

  6. Haga clic en Aceptar.

    Visual Studio agrega el proyecto ExtensiónPasoImplementación a la solución y abre el archivo de código predeterminado Class1.

  7. Elimine el archivo de código Class1 del proyecto.

Para crear el proyecto Comandos de SharePoint

  1. En el Explorador de soluciones, haga clic en el nodo de la solución con el botón secundario, seleccione Agregar y haga clic en Nuevo proyecto.

    Nota

    En los proyectos de Visual Basic, el nodo de la solución aparece en el Explorador de soluciones solo cuando se activa la casilla Mostrar solución siempre en General, Proyectos y soluciones, Opciones (Cuadro de diálogo).

  2. En el cuadro de diálogo Agregar nuevo proyecto, expanda Visual C# o Visual Basic y, a continuación, haga clic en Windows.

  3. Haga clic en la plantilla de proyecto Biblioteca de clases.

  4. En el cuadro combinado de la parte superior del cuadro de diálogo, seleccione .NET Framework 3.5.

  5. En el cuadro Nombre, escriba ComandosSharePoint.

  6. Haga clic en Aceptar.

    Visual Studio agrega el proyecto ComandosSharePoint a la solución y abre el archivo de código predeterminado Class1.

  7. Elimine el archivo de código Class1 del proyecto.

Configurar los proyectos

Antes de escribir el código para crear el paso de implementación personalizado, tiene que agregar archivos de código y referencias de ensamblados, y configurar los proyectos.

Para configurar el proyecto ExtensiónPasoImplementación

  1. En el proyecto ExtensiónPasoImplementación, agregue dos archivos de código denominados:

    • UpgradeStep

    • DeploymentConfigurationExtension

  2. Haga clic en la opción Agregar referencia del menú Proyecto.

  3. En la pestaña .NET, presione CTRL y seleccione los ensamblados siguientes y, a continuación, haga clic en Aceptar:

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

Para configurar el proyecto ComandosSharePoint

  1. En el proyecto ComandosSharePoint, agregue un archivo de código llamado Commands.

  2. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto ComandosSharePoint.

  3. Haga clic en la opción Agregar referencia del menú Proyecto.

  4. En la pestaña .NET, presione CTRL y seleccione los ensamblados siguientes y, a continuación, haga clic en Aceptar:

    • Microsoft.SharePoint

    • Microsoft.VisualStudio.SharePoint.Commands

Definir el paso de implementación personalizado

Cree una clase que defina el paso de implementación de actualización. Para definir el paso de implementación, la clase implementa la interfaz IDeploymentStep. Implemente esta interfaz para definir un paso de implementación personalizado todas las veces que desee.

Para definir el paso de implementación personalizado

  1. En el proyecto ExtensiónPasoImplementación, haga doble clic en el archivo de código UpgradeStep.

  2. Pegue el código siguiente en este archivo.

    Nota

    Tras agregar este código, el proyecto tendrá algunos errores de compilación. Estos errores desaparecerán al agregar código en pasos posteriores.

    Imports System
    Imports Microsoft.VisualStudio.SharePoint
    Imports Microsoft.VisualStudio.SharePoint.Deployment
    Imports System.ComponentModel.Composition
    
    Namespace Contoso.DeploymentSteps.Upgrade
    
        ' Export attribute: Enables Visual Studio to discover and load this deployment step.
        ' DeploymentStep attribute: Specifies the ID for this new deployment step.
        ' UpgradeStep class: Defines a new deployment step that can be used to upgrade a solution 
        '     on a SharePoint site.
        <Export(GetType(IDeploymentStep))> _
        <DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")> _
        Friend Class UpgradeStep
            Implements IDeploymentStep
    
            Private solutionName As String
            Private solutionFullPath As String
    
            Private Sub Initialize(ByVal stepInfo As IDeploymentStepInfo) _
                Implements IDeploymentStep.Initialize
                stepInfo.Name = "Upgrade solution"
                stepInfo.StatusBarMessage = "Upgrading solution..."
                stepInfo.Description = "Upgrades the solution on the local machine."
            End Sub
    
            ' Specifies whether the solution can be upgraded.
            Private Function CanExecute(ByVal context As IDeploymentContext) As Boolean _
                Implements IDeploymentStep.CanExecute
    
                ' SharePoint returns all the installed solutions names in lower case.
                solutionName = (context.Project.Package.Model.Name & ".wsp").ToLower()
                solutionFullPath = context.Project.Package.OutputPath
                Dim solutionExists As Boolean = _
                    context.Project.SharePointConnection.ExecuteCommand(Of String, Boolean)(
                    "Contoso.Commands.IsSolutionDeployed", solutionName)
    
                ' Throw exceptions in error cases because deployment cannot proceed.
                If context.Project.IsSandboxedSolution = True Then
                    Dim sandboxMessage As String = "Cannot upgrade the solution. Upgrade deployment " & _
                        "configuration does not support Sandboxed solutions."
                    context.Logger.WriteLine(sandboxMessage, LogCategory.Error)
                    Throw New InvalidOperationException()
                ElseIf solutionExists = False Then
                    Dim notDeployedMessage As String = String.Format("Cannot upgrade the solution. The IsSolutionDeployed " & _
                        "command cannot find the following solution on the SharePoint site: {0}.", solutionName)
                    context.Logger.WriteLine(notDeployedMessage, LogCategory.Error)
                    Throw New InvalidOperationException(notDeployedMessage)
                End If
    
                ' Execute step and continue with deployment.
                Return True
            End Function
    
            Private Sub Execute(ByVal context As IDeploymentContext) _
                Implements IDeploymentStep.Execute
                context.Logger.WriteLine("Upgrading solution: " & solutionName, LogCategory.Status)
                context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution", _
                    solutionFullPath)
            End Sub
    
        End Class
    End Namespace
    
    using System;
    using Microsoft.VisualStudio.SharePoint;
    using Microsoft.VisualStudio.SharePoint.Deployment;
    using System.ComponentModel.Composition;
    
    namespace Contoso.DeploymentSteps.Upgrade
    {
        // Enables Visual Studio to discover and load this deployment step.
        [Export(typeof(IDeploymentStep))]
    
        // Specifies the ID for this new deployment step.
        [DeploymentStep("Contoso.DeploymentSteps.UpgradeSolution")]
    
        // Defines a new deployment step that can be used to upgrade a solution on a SharePoint site.
        internal class UpgradeStep : IDeploymentStep
        {
            private string solutionName;
            private string solutionFullPath;
    
            // Implements IDeploymentStep.Initialize.
            public void Initialize(IDeploymentStepInfo stepInfo)
            {
                stepInfo.Name = "Upgrade solution";
                stepInfo.StatusBarMessage = "Upgrading solution...";
                stepInfo.Description = "Upgrades the solution on the local machine.";
            }
    
            // Implements IDeploymentStep.CanExecute. Specifies whether the solution can be upgraded.
            public bool CanExecute(IDeploymentContext context)
            {
                // SharePoint returns all the installed solutions names in lower case.
                solutionName = (context.Project.Package.Model.Name + ".wsp").ToLower();
                solutionFullPath = context.Project.Package.OutputPath;
                bool solutionExists = context.Project.SharePointConnection.ExecuteCommand<string, bool>(
                    "Contoso.Commands.IsSolutionDeployed", solutionName);
    
                // Throw exceptions in error cases because deployment cannot proceed.
                if (context.Project.IsSandboxedSolution)
                {
                    string sandboxMessage = "Cannot upgrade the solution. The upgrade deployment configuration " +
                        "does not support Sandboxed solutions.";
                    context.Logger.WriteLine(sandboxMessage, LogCategory.Error);
                    throw new InvalidOperationException(sandboxMessage);
                }
                else if (!solutionExists)
                {
                    string notDeployedMessage = string.Format("Cannot upgrade the solution. The IsSolutionDeployed " +
                        "command cannot find the following solution: {0}.", solutionName);
                    context.Logger.WriteLine(notDeployedMessage, LogCategory.Error);
                    throw new InvalidOperationException(notDeployedMessage);
                }
    
                // Execute step and continue with deployment.
                return true;
            }
    
            // Implements IDeploymentStep.Execute.
            public void Execute(IDeploymentContext context)
            {
                context.Logger.WriteLine("Upgrading solution: " + solutionName, LogCategory.Status);
                context.Project.SharePointConnection.ExecuteCommand("Contoso.Commands.UpgradeSolution",
                    solutionFullPath);
            }
        }
    }
    

Crear una configuración de implementación que incluya el paso de implementación personalizado

Cree una extensión de proyecto para la nueva configuración de implementación. La nueva configuración de implementación incluye el paso de implementación de actualización y varios pasos de implementación integrados. Esta configuración de implementación facilita a los desarrolladores de SharePoint el uso del paso de implementación de actualización en proyectos SharePoint.

Para crear la configuración de implementación, la clase implementa la interfaz ISharePointProjectExtension. Implemente esta interfaz para crear una extensión de proyecto de SharePoint todas las veces que desee.

Para crear la configuración de implementación

  1. En el proyecto ExtensiónPasoImplementación, haga doble clic en el archivo de código DeploymentConfigurationExtension.

  2. Pegue el código siguiente en este archivo.

    Imports Microsoft.VisualStudio.SharePoint
    Imports Microsoft.VisualStudio.SharePoint.Deployment
    Imports System.ComponentModel.Composition
    
    Namespace Contoso.DeploymentSteps.Upgrade
    
        ' Export attribute: Enables Visual Studio to discover and load this project-level extension.
        ' DeploymentConfigurationExtension class: Defines a project-level extension. The extension creates 
        '     a new deployment configuration that includes the upgrade deployment step.
        <Export(GetType(ISharePointProjectExtension))> _
        Friend Class DeploymentConfigurationExtension
            Implements ISharePointProjectExtension
    
            Private Sub Initialize(ByVal projectService As ISharePointProjectService) _
                Implements ISharePointProjectExtension.Initialize
                AddHandler projectService.ProjectInitialized, AddressOf ProjectInitialized
            End Sub
    
            ' Creates the new deployment configuration.
            Private Sub ProjectInitialized(ByVal Sender As Object, ByVal e As SharePointProjectEventArgs)
                Dim deploymentSteps As String() = New String() _
                {
                    DeploymentStepIds.PreDeploymentCommand, _
                    DeploymentStepIds.RecycleApplicationPool, _
                    "Contoso.DeploymentSteps.UpgradeSolution", _
                    DeploymentStepIds.PostDeploymentCommand _
                }
                Dim retractionSteps As String() = New String() _
                {
                    DeploymentStepIds.RecycleApplicationPool, _
                    DeploymentStepIds.RetractSolution
                }
                Dim configuration As IDeploymentConfiguration = e.Project.DeploymentConfigurations.Add( _
                    "Upgrade", deploymentSteps, retractionSteps)
                configuration.Description = "This is the upgrade deployment configuration"
            End Sub
    
        End Class
    End Namespace
    
    using Microsoft.VisualStudio.SharePoint;
    using Microsoft.VisualStudio.SharePoint.Deployment;
    using System.ComponentModel.Composition;
    
    namespace Contoso.DeploymentSteps.Upgrade
    {
        // Enables Visual Studio to discover and load this project-level extension.
        [Export(typeof(ISharePointProjectExtension))]
    
        // Defines a project-level extension. The extension creates a new deployment configuration that includes the
        // upgrade deployment step.
        internal class DeploymentConfigurationExtension : ISharePointProjectExtension
        {
            // Implements ISharePointProjectExtension.Initialize.
            public void Initialize(ISharePointProjectService projectService)
            {
                projectService.ProjectInitialized += ProjectInitialized;
            }
    
            // Creates the new deployment configuration.
            private void ProjectInitialized(object sender, SharePointProjectEventArgs e)
            {
                string[] deploymentSteps = new string[] 
                {
                    DeploymentStepIds.PreDeploymentCommand,
                    DeploymentStepIds.RecycleApplicationPool,
                    "Contoso.DeploymentSteps.UpgradeSolution",
                    DeploymentStepIds.PostDeploymentCommand 
                };
    
                string[] retractionSteps = new string[] 
                {
                    DeploymentStepIds.RecycleApplicationPool,
                    DeploymentStepIds.RetractSolution                
                };
    
                IDeploymentConfiguration configuration = e.Project.DeploymentConfigurations.Add(
                    "Upgrade", deploymentSteps, retractionSteps);
                configuration.Description = "This is the upgrade deployment configuration";
            }
        }
    }
    

Crear los comandos de SharePoint personalizados

Cree dos comandos personalizados que llamen al modelo de objetos de servidor de SharePoint. Un comando determina si ya hay implementada una solución; el otro actualiza una solución.

Para definir los comandos de SharePoint

  1. En el proyecto ComandosSharePoint, haga doble clic en el archivo de código Commands.

  2. Pegue el código siguiente en este archivo.

    Imports System
    Imports System.IO
    Imports Microsoft.SharePoint
    Imports Microsoft.SharePoint.Administration
    Imports Microsoft.VisualStudio.SharePoint.Commands
    
    Namespace Contoso.DeploymentSteps.Upgrade
    
        Friend Class Commands
    
            ' Determines whether the specified solution has been deployed to the local SharePoint server.
            <SharePointCommand("Contoso.Commands.IsSolutionDeployed")> _
            Private Function IsSolutionDeployed(ByVal context As ISharePointCommandContext, ByVal solutionName As String) As Boolean
                Dim solution As SPSolution = SPFarm.Local.Solutions(solutionName)
                Return solution IsNot Nothing
            End Function
    
            ' Upgrades the specified solution to the local SharePoint server.
            <SharePointCommand("Contoso.Commands.UpgradeSolution")> _
            Private Sub UpgradeSolution(ByVal context As ISharePointCommandContext, ByVal fullWspPath As String)
                Dim solution As SPSolution = SPFarm.Local.Solutions(Path.GetFileName(fullWspPath))
                If solution Is Nothing Then
                    Throw New InvalidOperationException("The solution has not been deployed.")
                End If
                solution.Upgrade(fullWspPath)
            End Sub
    
        End Class
    End Namespace
    
    using System;
    using System.IO;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Administration;
    using Microsoft.VisualStudio.SharePoint.Commands;
    
    namespace Contoso.DeploymentSteps.Upgrade
    {
        internal class Commands
        {
            // Determines whether the specified solution has been deployed to the local SharePoint server.
            [SharePointCommand("Contoso.Commands.IsSolutionDeployed")]
            private bool IsSolutionDeployed(ISharePointCommandContext context, string solutionName)
            {
                SPSolution solution = SPFarm.Local.Solutions[solutionName];
                return solution != null;
            }
    
            // Upgrades the specified solution to the local SharePoint server.
            [SharePointCommand("Contoso.Commands.UpgradeSolution")]
            private void UpgradeSolution(ISharePointCommandContext context, string fullWspPath)
            {
                SPSolution solution = SPFarm.Local.Solutions[Path.GetFileName(fullWspPath)];
    
                if (solution == null)
                {
                    throw new InvalidOperationException("The solution has not been deployed.");
                }
    
                solution.Upgrade(fullWspPath);
            }
        }
    }
    

Punto de control

En este punto del tutorial, todo el código para el paso de implementación personalizado y los comandos de SharePoint están en los proyectos. Compile la solución para asegurarse de que ambos proyectos se compilan sin errores.

Para compilar la solución

  • En el menú Generar, seleccione Generar solución.

Crear un paquete VSIX para implementar la extensión

Para implementar la extensión, utilice el proyecto VSIX en la solución para crear un paquete VSIX. Primero, configure el paquete VSIX modificando el archivo source.extension.vsixmanifest incluido en el proyecto VSIX. A continuación, cree el paquete VSIX compilando la solución.

Para crear y configurar el paquete VSIX

  1. En el Explorador de soluciones, bajo el proyecto PasoImplementarActualización, haga doble clic en el archivo source.extension.vsixmanifest.

    Visual Studio abre el archivo en el editor de manifiestos. El archivo source.extension.vsixmanifest es la base del archivo extension.vsixmanifest que es requerido por todos los paquetes VSIX. Para obtener más información sobre este archivo, vea VSIX Extension Schema Reference.

  2. En el cuadro Nombre de producto, escriba Paso Implementar Actualización para proyectos de SharePoint.

  3. En el cuadro Autor, escriba Contoso.

  4. En el cuadro Descripción, escriba Ofrece un paso de implementación de actualizaciones personalizado que se puede usar en proyectos de SharePoint.

  5. En la sección Contenido del editor, haga clic en el botón Agregar contenido.

  6. En el cuadro de diálogo Agregar contenido, en el cuadro de lista Seleccione un tipo de contenido, elija MEF Component.

    Nota

    Este valor corresponde al elemento MefComponent del archivo extension.vsixmanifest. Este elemento especifica el nombre de un ensamblado de extensión en el paquete VSIX. Para obtener más información, vea MEFComponent Element (VSX Schema).

  7. En Seleccione un origen, haga clic en el botón de radio Proyecto y seleccione DeploymentStepExtension en el cuadro de lista situado al lado.

  8. Haga clic en Aceptar.

  9. En el editor de manifiestos, haga clic de nuevo en el botón Agregar contenido.

  10. En el cuadro de diálogo Agregar contenido, en el cuadro de lista Seleccione un tipo de contenido, seleccione Tipo de extensión personalizada.

    Nota

    Este valor corresponde al elemento CustomExtension del archivo extension.vsixmanifest. Este elemento especifica una extensión personalizada que desea incluir en la extensión de Visual Studio. Para obtener más información, vea CustomExtension Element (VSX Schema).

  11. En el cuadro de texto Tipo, escriba SharePoint.Commands.v4.

    Nota

    Este valor corresponde al atributo Type del elemento CustomExtension del archivo extension.vsixmanifest. El valor Sharepoint.Commands.v4 se requiere para todos los ensamblados de la extensión personalizada que contengan comandos de SharePoint personalizados.

  12. En Seleccione un origen, haga clic en el botón de radio Proyecto, y seleccione SharePointCommands en el cuadro de lista situado al lado.

  13. Haga clic en Aceptar.

  14. En el menú Generar, haga clic en Generar solución. Asegúrese de que la solución se compila sin errores.

  15. Abra la carpeta de salida de la compilación del proyecto PasoImplementarActualización. Asegúrese de que la carpeta contiene el archivo PasoImplementarActualización.vsix.

    De forma predeterminada, la carpeta de resultado de compilación es .. \bin\Debug, que se encuentra bajo la carpeta que contiene el archivo de proyecto.

Preparar la prueba del paso de implementación de actualización

Para probar el paso de implementación de actualización, debe implementar primero una solución de ejemplo en el sitio de SharePoint. Empiece por depurar la extensión en la instancia experimental de Visual Studio. A continuación, cree una definición de lista y una instancia de lista que va a utilizar para probar el paso de implementación, y después impleméntelas en el sitio de SharePoint. A continuación, modifique la definición y la instancia de lista e impleméntelas de nuevo para ver cómo el proceso de implementación predeterminado sobrescribe las soluciones del sitio de SharePoint.

Más adelante en este tutorial, modificará la definición de lista y la instancia de lista y, a continuación, las actualizará en el sitio de SharePoint.

Para comenzar a depurar la extensión

  1. Reinicie Visual Studio con privilegios de administrador y abra la solución PasoImplementarActualización.

  2. En el proyecto ExtensiónPasoImplementación, abra el archivo de código UpgradeStep y agregue un punto de interrupción a la primera línea de código en los métodos CanExecute y Execute.

  3. Presione F5 para iniciar la depuración.

  4. Visual Studio instala la extensión en %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Paso Implementar Actualización para proyectos de SharePoint\1.0 e inicia una instancia experimental de Visual Studio. Probará el paso de implementación de actualización en esta instancia de Visual Studio.

Para crear la definición y la instancia de lista

  1. En la instancia experimental de Visual Studio, en el menú Archivo, seleccione Nuevo y haga clic en Proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, expanda Visual C#, expanda SharePointy, a continuación, haga clic en 2010.

  3. Asegúrese de que .NET Framework 3.5 esté seleccionado en el cuadro combinado de la parte superior del cuadro de diálogo. Los proyectos de Microsoft SharePoint Foundation 2010y Microsoft SharePoint Server 2010 requieren esta versión de .NET Framework.

  4. En la lista de plantillas de proyecto, haga clic en Definición de lista.

  5. En el cuadro Nombre, escriba DefiniciónListaEmpleados.

  6. Haga clic en Aceptar.

  7. En el Asistente para la personalización de SharePoint, escriba la dirección URL del sitio que desea utilizar para depurar.

  8. En ¿Cuál es el nivel de confianza de esta solución de SharePoint?, haga clic en Implementar como solución de granja de servidores.

    Nota

    El paso de implementación de actualización no admite soluciones en espacio aislado.

  9. Haga clic en Siguiente.

  10. En la página Elegir configuración de definición de lista, bajo ¿Cuál es el nombre para mostrar de la definición de lista?, escriba Employees List.

  11. Bajo ¿De qué tipo es la definición de lista?, seleccione Contactos.

  12. Asegúrese de que la casilla Agregue una instancia de lista para esta definición de lista está activada.

  13. Haga clic en Finalizar.

    Visual Studio crea el proyecto y abre el archivo Elements.xml de la definición de lista en el editor.

  14. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto EmployeesListDefinition y, a continuación, haga clic en Propiedades.

  15. En la pestaña SharePoint de las propiedades de proyecto, desactive la casilla Retraer automáticamente después de depurar.

  16. En el Explorador de soluciones, expanda el nodo Definición de lista y expanda el nodo secundario InstanciaLista1.

  17. Haga doble clic en el archivo Elements.xml que es un elemento secundario del nodo InstanciaLista1. El archivo Elements.xml se abre en el editor.

  18. Reemplace el XML predeterminado de este archivos por el siguiente. Este XML cambia el nombre de la lista por Employees. También agrega un elemento para un empleado denominado Jim Hance.

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <ListInstance Title="Employees"
                    OnQuickLaunch="TRUE"
                    TemplateType="10000"
                    Url="Lists/Employees"
                    Description="Simple list to test upgrade deployment step">
        <Data>
          <Rows>
            <Row>
              <Field Name="Title">Hance</Field>
              <Field Name="FirstName">Jim</Field>
              <Field Name="Company">Contoso</Field>
            </Row>
          </Rows>
        </Data>
      </ListInstance>
    </Elements>
    

Para implementar la definición y la instancia de lista

  1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto DefiniciónListaEmpleados.

  2. En la ventana Propiedades, asegúrese de que la propiedad Active Deployment Configuration está establecida en True (este es el valor predeterminado).

  3. Presione F5.

  4. Compruebe que el proyecto se compila correctamente, que el sitio de SharePoint se abre a la nueva lista Employees, y que la lista incluye una entrada para Jim Hance.

  5. Cierre el explorador web.

Modificar la definición y la instancia de lista e implementarlas de nuevo

  1. En el proyecto DefiniciónListaEmpleados, haga doble clic en el archivo Elements.xml que es un elemento secundario del elemento de proyecto InstanciaLista1.

  2. Quite el elemento Data y sus elementos secundarios para quitar la entrada de Jim Hance de la lista. Cuando finalice, el archivo debería contener el XML siguiente.

    <?xml version="1.0" encoding="utf-8"?>
    <Elements xmlns="https://schemas.microsoft.com/sharepoint/">
      <ListInstance Title="Employees"
                    OnQuickLaunch="TRUE"
                    TemplateType="10000"
                    Url="Lists/Employees"
                    Description="Simple list to test upgrade deployment step">
      </ListInstance>
    </Elements>
    
  3. Haga doble clic en el archivo Schema.xml que es un elemento secundario del elemento de proyecto ListDefinition1.

  4. Busque la cadena BaseViewID="1" en este archivo. Esta cadena es un atributo de un elemento View que modificará en los siguientes pasos.

  5. Bajo este elemento View, busque el elemento secundario ViewFields.

  6. Bajo el elemento ViewFields, quite los dos elementos FieldRef secundarios que tienen el atributo Name establecido en Attachments y HomePhone. Esta acción quita estos campos de la vista predeterminada de la lista Employees del sitio de SharePoint. Cuando haya finalizado, el elemento ViewFields debería tener el contenido siguiente.

    <ViewFields>
      <FieldRef Name="LinkTitle" />
      <FieldRef Name="FirstName" />
      <FieldRef Name="Company" />
      <FieldRef Name="WorkPhone" />
      <FieldRef Name="Email" />
    </ViewFields>
    
  7. Presione F5. Compruebe que aparece el cuadro de diálogo Conflictos de implementación. Este cuadro de diálogo aparece cuando Visual Studio intenta implementar una solución (la instancia de lista) en un sitio de SharePoint que ya la tiene implementada.

    Más adelante en este tutorial, observará que este cuadro de diálogo no aparece al ejecutar el paso de implementar actualización.

  8. Haga clic en Resolver automáticamente. Visual Studio elimina la instancia de lista del sitio de SharePoint, implementa el elemento de lista en el proyecto y, a continuación, abre el sitio de SharePoint en la lista Employees.

  9. Compruebe los siguientes detalles:

    • Las columnas Attachments y Home Phone no aparecen en esta vista de lista.

    • La lista ahora está vacía. Cuando utilizó la configuración de implementación Predeterminada para implementar de nuevo la solución, la lista Employees se reemplazó con la nueva lista vacía de su proyecto.

Probar el paso de implementación

Ahora ya puede probar el paso de implementación de actualización. Primero, agregue un elemento a la instancia de lista en SharePoint. A continuación, cambie la definición de lista y la instancia de lista, y después actualícelas en el sitio de SharePoint para confirmar que el paso de implementación de actualización no sobrescribe el nuevo elemento.

Para agregar manualmente un elemento a la lista

  1. En la Cinta del sitio de SharePoint, haga clic en la pestaña Elementos.

  2. En el grupo Nuevo, haga clic en Nuevo elemento.

  3. En el campo Last Name, escriba Ruth.

  4. En el campo First Name, escriba Andy.

  5. En el campo Company, escriba Contoso.

  6. Haga clic en Guardar. Compruebe que el nuevo elemento aparece en la lista. Más adelante en este tutorial, utilizará este elemento para comprobar que el paso de implementación de actualización no sobrescribe el contenido de esta lista.

  7. Cierre el explorador web.

Para probar el paso de implementación de actualización

  1. En la instancia experimental de Visual Studio, en el Explorador de soluciones, haga clic en el nodo del proyecto DefiniciónListaEmpleados.

  2. En la ventana Propiedades, establezca la propiedad Active Deployment Configuration en Upgrade. Esta es la configuración de implementación personalizada que incluye el nuevo paso de implementación de actualización.

  3. Haga doble clic en el archivo Schema.xml que es un elemento secundario del elemento de proyecto ListDefinition1.

  4. Busque el elemento ViewFields que modificó anteriormente.

  5. Bajo el elemento ViewFields, quite los dos elementos FieldRef secundarios que tienen el atributo Name establecido en WorkPhone y Email. Esta acción quita estos campos de la vista predeterminada de la lista Employees del sitio de SharePoint. Cuando haya finalizado, el elemento ViewFields debería tener el contenido siguiente.

    <ViewFields>
      <FieldRef Name="LinkTitle" />
      <FieldRef Name="FirstName" />
      <FieldRef Name="Company" />
    </ViewFields>
    
  6. Presione F5. Compruebe que el código de la otra instancia de Visual Studio se detiene en el punto de interrupción que estableció anteriormente en el método CanExecute.

  7. Presione F5 de nuevo. Compruebe que el código se detiene en el punto de interrupción que estableció anteriormente en el método Execute.

  8. Presione F5 por última vez. El sitio de SharePoint se abre en la lista Employees.

  9. En el área de inicio rápido, haga clic en la lista Employees.

  10. Compruebe los siguientes detalles:

    • El elemento Andy Ruth que agregó manualmente todavía está en la lista.

    • Las columnas Business Phone y E-mail Address no se muestran en esta vista de lista.

    La configuración de implementación Actualizar modifica la instancia de la lista Employees existente en el sitio de SharePoint. Si se utiliza la configuración de implementación Predeterminada en lugar de Actualizar, se produce un conflicto de implementación. Visual Studio lo resolvería reemplazando la lista Employees y se eliminaría el elemento Andy Ruth.

Limpiar el equipo de desarrollo

Después de probar el paso de implementación de actualización, quite la instancia y la definición de lista del sitio de SharePoint, y quita la extensión de paso de implementación de Visual Studio.

Para quitar la instancia de lista del sitio de SharePoint

  1. Abra la lista Employees en el sitio de SharePoint, si no está abierta ya.

  2. En la Cinta del sitio de SharePoint, haga clic en la pestaña Lista.

  3. En la pestaña Lista, en el grupo Configuración, haga clic en Configuración de lista.

  4. En Permisos y administración, haga clic en Eliminar esta lista. Haga clic en Aceptar para confirmar que desea enviar la lista a la papelera de reciclaje.

  5. Cierre el explorador web.

Para quitar la definición de lista del sitio de SharePoint

  • En la instancia experimental de Visual Studio, en el menú Generar, seleccione Retirar.

    Visual Studio retira la definición de lista del sitio de SharePoint.

Para desinstalar la extensión

  1. En la instancia experimental de Visual Studio, en el menú Herramientas, haga clic en Administrador de extensiones.

    Se abre el cuadro de diálogo Administrador de extensiones.

  2. En la lista de extensiones, haga clic en Paso Implementar para proyectos de SharePoint y, a continuación, haga clic en Desinstalar.

  3. En el cuadro de diálogo que aparece, haga clic en para confirmar que desea desinstalar la extensión.

  4. Haga clic en Reiniciar ahora para completar la desinstalación.

  5. Cierre ambas instancias de Visual Studio (la instancia experimental y la instancia de Visual Studio que tiene abierta la solución PasoImplementarActualización).

Vea también

Otros recursos

Extender el empaquetado e implementación de SharePoint