Partager via


Procédure pas à pas : création d'une étape de déploiement personnalisée pour des projets SharePoint

Lorsque vous déployez un projet SharePoint, Visual Studio 2010 exécute une série d' étapes de déploiement dans un ordre spécifique. Visual Studio inclut de nombreuses étapes de déploiement intégrées, mais rien ne vous empêche de créer vos propres étapes de déploiement.

Au cours de cette procédure pas à pas, vous aurez l'occasion de créer une étape de déploiement personnalisée en vue de mettre à niveau des solutions sur un serveur SharePoint. Visual Studio propose des étapes de déploiement intégrées pour de nombreuses tâches (retrait ou ajout de solutions, par exemple), mais rien n'est prévu pour la mise à niveau de solutions. Par défaut, lorsque vous déployez une solution SharePoint, Visual Studio commence par retirer la solution (si elle est déjà déployée) avant de redéployer l'ensemble de la solution. Pour plus d'informations sur les étapes de déploiement intégrées, consultez Déploiement de packages de solution SharePoint.

Cette procédure pas à pas présente les tâches suivantes :

  • Création d'une extension Visual Studio qui exécute deux tâches principales :

    • Elle définit une étape de déploiement personnalisée pour mettre à niveau des solutions SharePoint.

    • Elle crée une extension de projet qui définit une nouvelle configuration de déploiement. Une configuration de déploiement est un ensemble d'étapes de déploiement exécutées pour un projet donné. La nouvelle configuration de déploiement inclut l'étape de déploiement personnalisée et plusieurs étapes de déploiement intégrées.

  • Création de deux commandes SharePoint personnalisées appelées par l'assembly d'extension. Les commandes SharePoint sont des méthodes susceptibles d'être appelées par les assemblys d'extension en vue d'utiliser des API dans le modèle objet serveur SharePoint. Pour plus d'informations, consultez Appel des modèles d'objet SharePoint.

  • Génération d'un package Visual Studio Extension (VSIX) pour déployer les deux assemblys.

  • Test de la nouvelle étape de déploiement.

Composants requis

Vous avez besoin des composants suivants sur l'ordinateur de développement pour terminer cette procédure pas à pas :

Une connaissance des concepts suivants est utile, mais pas obligatoire, pour effectuer cette procédure pas à pas :

Création du projet

Pour exécuter cette procédure pas à pas, vous devez créer trois projets :

  • Un projet VSIX pour créer le package VSIX afin de déployer l'extension.

  • Un projet de bibliothèque de classes qui implémente l'extension. Ce projet doit cibler le .NET Framework 4.

  • Un projet de bibliothèque de classes qui définit les commandes SharePoint personnalisées. Ce projet doit cibler .NET Framework 3.5.

Démarrez la procédure pas à pas en créant les projets.

Pour créer le projet VSIX

  1. Démarrez Visual Studio.

  2. Dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.

  3. Dans la boîte de dialogue Nouveau projet, développez les nœuds Visual C# ou Visual Basic, puis cliquez sur Extensibilité.

    Notes

    Le nœud Extensibilité est disponible uniquement si vous installez le Kit de développement Visual Studio 2010 SDK. Pour plus d'informations, reportez-vous à la section traitant des conditions requises ci-dessus.

  4. Dans la zone de liste déroulante en haut de la boîte de dialogue, sélectionnez .NET Framework 4.

  5. Cliquez sur le modèle Projet VSIX.

  6. Dans la zone Nom, tapez UpgradeDeploymentStep.

  7. Cliquez sur OK.

    Visual Studio ajoute le projet UpgradeDeploymentStep à l'Explorateur de solutions.

Pour créer le projet d'extension

  1. Cliquez avec le bouton droit sur le nœud de la solution dans l'Explorateur de solutions, cliquez sur Ajouter, puis sur Nouveau projet.

    Notes

    Dans les projets Visual Basic, le nœud de la solution s'affiche dans l'Explorateur de solutions à condition d'avoir activé la case à cocher Toujours afficher la solution dans la Général, Projets et solutions, boîte de dialogue Options.

  2. Dans la boîte de dialogue Nouveau projet, développez le nœud Visual C# ou Visual Basic, puis cliquez sur Fenêtres.

  3. Dans la zone de liste déroulante en haut de la boîte de dialogue, sélectionnez .NET Framework 4.

  4. Sélectionnez le modèle de projet Bibliothèque de classes.

  5. Dans la zone de texte Nom, tapez DeploymentStepExtension.

  6. Cliquez sur OK.

    Visual Studio ajoute le projet DeploymentStepExtension à la solution et ouvre le fichier de code Class1 par défaut.

  7. Supprimez le fichier de code Class1 du projet.

Pour créer le projet SharePointCommands

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud de solution, pointez sur Ajouter, puis cliquez sur Nouveau projet.

    Notes

    Dans les projets Visual Basic, le nœud de solution s'affiche seulement dans l'Explorateur de solutions si la case à cocher Toujours afficher la solution est activée dans la Général, Projets et solutions, boîte de dialogue Options.

  2. Dans la boîte de dialogue Ajouter un nouveau projet, développez Visual C# ou Visual Basic, puis cliquez sur Windows.

  3. Cliquez sur le modèle de projet Bibliothèque de classes.

  4. Dans la zone de liste déroulante en haut de la boîte de dialogue, sélectionnez .NET Framework 3.5.

  5. Dans la zone Nom, tapez SharePointCommands.

  6. Cliquez sur OK.

    Visual Studio ajoute le projet SharePointCommands à la solution et ouvre le fichier de code Class1 par défaut.

  7. Supprimez le fichier de code Class1 du projet.

Configuration des projets

Avant d'écrire le code pour créer l'étape de déploiement personnalisée, il convient d'ajouter des fichiers de code et des références d'assembly et de configurer les projets.

Pour configurer le projet DeploymentStepExtension

  1. Dans le projet DeploymentStepExtension, ajoutez deux fichiers de code appelés :

    • UpgradeStep

    • DeploymentConfigurationExtension

  2. Dans le menu Projet, cliquez sur Ajouter une référence.

  3. Sous l'onglet .NET, appuyez sur Ctrl et sélectionnez les assemblys suivants, puis cliquez sur OK.

    • Microsoft.VisualStudio.SharePoint

    • System.ComponentModel.Composition

Pour configurer le projet SharePointCommands

  1. Dans le projet SharePointCommands, ajoutez un fichier de code appelé Commands.

  2. Dans l'Explorateur de solutions, cliquez sur le nœud de projet SharePointCommands.

  3. Dans le menu Projet, cliquez sur Ajouter une référence.

  4. Sous l'onglet .NET, appuyez sur Ctrl et sélectionnez les assemblys suivants, puis cliquez sur OK.

    • Microsoft.SharePoint

    • Microsoft.VisualStudio.SharePoint.Commands

Définition de l'étape de déploiement personnalisée

Créez une classe qui définit l'étape de déploiement de mise à niveau. Pour définir l'étape de déploiement, la classe implémente l'interface IDeploymentStep. Implémentez cette interface chaque fois que vous souhaitez définir une étape de déploiement personnalisée.

Pour définir l'étape de déploiement personnalisée

  1. Dans le projet DeploymentStepExtension, double-cliquez sur le fichier de code UpgradeStep.

  2. Collez le code suivant dans ce fichier.

    Notes

    Après l'ajout de ce code, le projet comportera des erreurs de compilation. Ces erreurs disparaîtront lorsque vous ajouterez du code dans les étapes ultérieures.

    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);
            }
        }
    }
    

Création d'une configuration de déploiement qui inclut l'étape de déploiement personnalisée

Créez une extension de projet pour la nouvelle configuration de déploiement. La nouvelle configuration de déploiement contient plusieurs étapes de déploiement intégrées ainsi que la nouvelle étape de déploiement de mise à niveau. Cette configuration de déploiement facilite le travail des développeurs SharePoint qui prévoient d'utiliser l'étape de déploiement de mise à niveau dans les projets SharePoint.

Pour créer la configuration de déploiement, la classe implémente l'interface ISharePointProjectExtension. Implémentez cette interface chaque fois que vous souhaitez créer une extension de projet SharePoint.

Pour créer la configuration de déploiement

  1. Dans le projet DeploymentStepExtension, double-cliquez sur le fichier de code DeploymentConfigurationExtension.

  2. Collez le code suivant dans ce fichier.

    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";
            }
        }
    }
    

Création de commandes SharePoint personnalisées

Créez deux commandes personnalisées faisant appel au modèle objet serveur SharePoint. L'une des deux commandes a pour objet de déterminer si une solution est déjà déployée et l'autre de mettre à niveau une solution.

Pour définir les commandes SharePoint

  1. Dans le projet SharePointCommands, double-cliquez sur le fichier de code Commands.

  2. Collez le code suivant dans ce fichier.

    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);
            }
        }
    }
    

Point de contrôle

À ce stade de la procédure pas à pas, les projets comportent le code complet de l'étape de déploiement personnalisée ainsi que les commandes SharePoint. Générez la solution pour vous assurer que la compilation des deux projets se déroule sans erreur.

Pour générer la solution

  • Dans le menu Générer, sélectionnez Générer la solution.

Création d'un package VSIX pour déployer l'extension

Pour déployer l'extension, utilisez le projet VSIX inclus dans votre solution pour créer un package VSIX. En premier lieu, configurez le package VSIX en modifiant le fichier source.extension.vsixmanifest qui est inclus dans le projet VSIX. Ensuite, créez le package VSIX en générant la solution.

Pour configurer et créer le package VSIX

  1. Dans l'Explorateur de solutions, sous le projet UpgradeDeploymentStep, double-cliquez sur le fichier source.extension.vsixmanifest.

    Visual Studio ouvre le fichier dans l'éditeur de manifeste. Le fichier source.extension.vsixmanifest est la base du fichier extension.vsixmanifest requis par tous les packages VSIX. Pour plus d'informations sur ce fichier, consultez VSIX Extension Schema Reference.

  2. Dans la zone Nom du produit, tapez Étape de déploiement de mise à niveau pour les projets SharePoint.

  3. Dans la zone Auteur, tapez Contoso.

  4. Dans la zone Description, tapez Fournit une étape de déploiement de mise à niveau personnalisée pouvant être utilisée dans des projets SharePoint.

  5. Dans la section Contenu de l'éditeur, cliquez sur le bouton Ajouter du contenu.

  6. Dans la boîte de dialogue Ajouter du contenu, dans la zone de liste Sélectionner un type de contenu, sélectionnez Composant MEF.

    Notes

    Cette valeur correspond à l'élément MefComponent dans le fichier extension.vsixmanifest. Cet élément spécifie le nom d'un assembly d'extension dans le package VSIX. Pour plus d'informations, consultez MEFComponent Element (VSX Schema).

  7. Sous Sélectionner une source, cliquez sur la case d'option Projet et sélectionnez DeploymentStepExtension dans la zone de liste en regard de cette dernière.

  8. Cliquez sur OK.

  9. Dans l'éditeur de manifeste, cliquez à nouveau sur le bouton Ajouter du contenu.

  10. Dans la boîte de dialogue Ajouter du contenu, dans la zone de liste Sélectionner un type de contenu, sélectionnez Type d'extension personnalisée.

    Notes

    Cette valeur correspond à l'élément CustomExtension dans le fichier extension.vsixmanifest. Cet élément désigne l'extension personnalisée à inclure à l'extension Visual Studio. Pour plus d'informations, consultez CustomExtension Element (VSX Schema).

  11. Dans la zone de texte Type, tapez SharePoint.Commands.v4.

    Notes

    Cette valeur correspond à l'attribut Type de l'élément CustomExtension dans le fichier extension.vsixmanifest. La valeur Sharepoint.Commands.v4 est obligatoire pour tous les assemblys d'extension personnalisés qui contiennent des commandes SharePoint personnalisées.

  12. Sous Sélectionner une source, cliquez sur la case d'option Projet et sélectionnez SharePointCommands dans la zone de liste en regard de cette dernière.

  13. Cliquez sur OK.

  14. Dans le menu Générer, cliquez sur Générer la solution. Assurez-vous que la solution se compile sans erreurs.

  15. Ouvrez le dossier de sortie de la génération pour le projet UpgradeDeploymentStep. Assurez-vous que ce dossier contient, à présent, le fichier UpgradeDeploymentStep.vsix.

    Par défaut, le dossier de sortie de la génération est le dossier .. \bin\Debug sous le dossier qui contient votre fichier projet.

Préparation en vue de tester l'étape de déploiement de mise à niveau

Pour tester l'étape de déploiement de mise à niveau, vous devez commencer par déployer un exemple de solution au niveau du site SharePoint. Commencez par déboguer le projet d'extension dans l'instance expérimentale de Visual Studio. Ensuite, créez une définition de liste et une instance de liste à utiliser pour tester l'étape de déploiement, puis déployez-les sur le site SharePoint. Il conviendra ensuite de modifier la définition de liste et l'instance de liste et de les redéployer pour observer la façon dont le processus de déploiement par défaut se substitue aux solutions sur le site SharePoint.

À une étape ultérieure de cette procédure, vous modifierez la définition de liste et l'instance de liste, puis les mettrez à niveau sur le site SharePoint.

Pour démarrer le débogage de l'extension

  1. Redémarrez Visual Studio avec les privilèges d'administrateur et ouvrez la solution UpgradeDeploymentStep.

  2. Dans le projet DeploymentStepExtension, ouvrez le fichier de code UpgradeStep et ajoutez un point d'arrêt au niveau de la première ligne de code dans les méthodes CanExecute et Execute.

  3. Appuyez sur F5 pour démarrer le débogage.

  4. Visual Studio installe l'extension sous %UserProfile%\AppData\Local\Microsoft\VisualStudio\10.0Exp\Extensions\Contoso\Étape de déploiement de mise à niveau pour les projets SharePoint\1.0 et démarre une instance expérimentale de Visual Studio. Vous testerez l'étape de déploiement de mise à niveau dans cette instance de Visual Studio.

Pour créer la définition de liste et l'instance de liste

  1. Dans l'instance expérimentale de Visual Studio, dans le menu Fichier, pointez sur Nouveau, puis cliquez sur Projet.

  2. Dans la boîte de dialogue Nouveau projet, développez Visual C#, développez SharePoint, puis cliquez sur 2010.

  3. Dans la zone de liste déroulante en haut de la boîte de dialogue, vérifiez que .NET Framework 3.5 est sélectionné. Les projets pour Microsoft SharePoint Foundation 2010 et Microsoft SharePoint Server 2010 requièrent cette version du .NET Framework.

  4. Dans la liste des modèles de projet, cliquez sur Définition de liste.

  5. Dans la zone Nom, tapez DéfinitionListeEmployés.

  6. Cliquez sur OK.

  7. Dans l'Assistant Personnalisation de SharePoint, saisissez l'URL du site que vous souhaitez utiliser pour le débogage.

  8. Sous Quel est le niveau de confiance de cette solution SharePoint ?, cliquez sur Déployer en tant que solution de batterie.

    Notes

    L'étape de déploiement de mise à niveau ne prend pas en charge les solutions bac à sable (sandbox).

  9. Cliquez sur Suivant.

  10. Dans la page Choisir les paramètres de définition de liste sous Quel est le nom complet de la définition de liste ?, tapez Liste d'employés.

  11. Sous Quel est le type de la définition de liste ?, sélectionnez Contacts.

  12. Assurez-vous que la case à cocher Ajoutez une instance de liste pour cette définition de liste est activée.

  13. Cliquez sur Terminer.

    Visual Studio crée le projet et ouvre le fichier Elements.xml pour la définition de liste dans l'éditeur.

  14. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud de projet EmployeesListDefinition, puis cliquez sur Propriétés.

  15. Sous l'onglet SharePoint des propriétés du projet, désactivez la case à cocher Retrait automatique après le débogage.

  16. Dans l'Explorateur de solutions, développez le nœud ListDefinition1, puis développez le nœud enfant ListInstance1.

  17. Double-cliquez sur le fichier Elements.xml qui est un enfant du nœud ListInstance1. Le fichier Elements.xml s'ouvre dans l'éditeur.

  18. Remplacez le code XML par défaut contenu dans ce fichier par le code XML suivant. Ce code XML a pour effet de remplacer le nom de la liste par Employees. Il ajoute également un élément pour un employé nommé Julien Hallert.

    <?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>
    

Pour déployer la définition de liste et l'instance de liste

  1. Dans l'Explorateur de solutions, cliquez sur le nœud de projet DéfinitionListeEmployés.

  2. Dans la fenêtre Propriétés, assurez-vous que la propriété Configuration de déploiement active a la valeur Par défaut.

  3. Appuyez sur F5.

  4. Vérifiez que le projet est correctement généré, que le site SharePoint s'ouvre sur la nouvelle liste Employés, et que la liste inclut une entrée pour Julien Hallert.

  5. Fermez le navigateur Web.

Pour modifier la définition de liste et l'instance de liste et les redéployer

  1. Dans le projet DéfinitionListeEmployés, double-cliquez sur le fichier Elements.xml qui est un enfant de l'élément de projet ListInstance1.

  2. Supprimez l'élément Data et ses enfants pour supprimer de la liste l'entrée correspondant à Julien Hallert. Lorsque vous avez terminé, le fichier doit contenir le code XML suivant.

    <?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. Double-cliquez sur le fichier Schema.xml qui est un enfant de l'élément de projet ListDefinition1.

  4. Dans ce fichier, recherchez la chaîne BaseViewID="1". Cette chaîne est un attribut d'un élément View que vous modifierez au cours des étapes suivantes.

  5. Sous cet élément View, localisez l'élément enfant ViewFields.

  6. Sous l'élément ViewFields, supprimez les deux éléments enfants FieldRef dont l'attribut Name a la valeur Attachments et HomePhone. Cela permet d'éliminer ces champs de la vue par défaut de la liste Employees sur le site SharePoint. Lorsque vous avez terminé, voici à quoi doit ressembler le contenu de l'élément ViewFields.

    <ViewFields>
      <FieldRef Name="LinkTitle" />
      <FieldRef Name="FirstName" />
      <FieldRef Name="Company" />
      <FieldRef Name="WorkPhone" />
      <FieldRef Name="Email" />
    </ViewFields>
    
  7. Appuyez sur F5. Assurez-vous que la boîte de dialogue Conflits de déploiement s'ouvre. Cette boîte de dialogue s'affiche lorsque Visual Studio essaie de déployer une solution (instance de liste) sur un site SharePoint sur lequel elle a déjà été déployée.

    Plus tard au cours de cette procédure, vous remarquerez que cette boîte de dialogue n'apparaît pas lorsque vous exécutez l'étape de déploiement de mise à niveau.

  8. Cliquez sur Résoudre automatiquement. Visual Studio supprime l'instance de liste du site SharePoint, déploie l'élément de liste dans le projet, puis ouvre le site SharePoint sur la liste Employés.

  9. Tenez compte des remarques suivantes :

    • Les colonnes Pièces jointes et Téléphone personnel ne s'affichent pas dans cette vue de la liste.

    • Vous pouvez constater que la liste est vide. En effet, lorsque vous avez utilisé la configuration de déploiement Par défaut pour redéployer la solution, la liste Employees a été remplacée par la nouvelle liste vide dans votre projet.

Test de l'étape de déploiement

Vous êtes maintenant prêt à tester l'étape de déploiement de mise à niveau. Tout d'abord, ajoutez un élément à l'instance de liste dans SharePoint. Ensuite, modifiez la définition de liste et l'instance de liste, puis mettez-les à niveau sur le site SharePoint pour vous assurer que l'étape de déploiement de mise à niveau ne remplace pas le nouvel élément.

Pour ajouter manuellement un élément à la liste

  1. Dans le Ruban du site SharePoint, cliquez sur l'onglet Éléments.

  2. Dans le groupe Nouveau, cliquez sur Nouvel élément.

  3. Dans le champ Nom, tapez Roland.

  4. Dans le champ Prénom, tapez Alex.

  5. Dans le champ Société, tapez Contoso.

  6. Cliquez sur Enregistrer. Vérifiez si le nouvel élément figure dans la liste. Lors d'une étape ultérieure de cette procédure, vous utiliserez cet élément pour vous assurer que l'étape de déploiement de mise à niveau ne remplace pas le contenu de cette liste.

  7. Fermez le navigateur Web.

Pour tester l'étape de déploiement de mise à niveau

  1. Dans l'instance expérimentale de Visual Studio, dans l'Explorateur de solutions, cliquez sur le nœud de projet EmployeesListDefinition.

  2. Dans la fenêtre Propriétés, donnez la valeur Mettre à niveau à la propriété Configuration de déploiement active. Il s'agit de la configuration de déploiement personnalisée contenant la nouvelle étape de déploiement de mise à niveau.

  3. Double-cliquez sur le fichier Schema.xml qui est un enfant de l'élément de projet ListDefinition1.

  4. Localisez l'élément ViewFields que vous avez modifié précédemment.

  5. Sous l'élément ViewFields, supprimez les deux éléments enfants FieldRef dont l'attribut Name a la valeur WorkPhone et Email. Cela permet d'éliminer ces champs de la vue par défaut de la liste Employees sur le site SharePoint. Lorsque vous avez terminé, voici à quoi doit ressembler le contenu de l'élément ViewFields.

    <ViewFields>
      <FieldRef Name="LinkTitle" />
      <FieldRef Name="FirstName" />
      <FieldRef Name="Company" />
    </ViewFields>
    
  6. Appuyez sur F5. Assurez-vous que le code dans l'autre instance de Visual Studio s'immobilise sur le point d'arrêt que vous avez défini précédemment dans la méthode CanExecute.

  7. Appuyez à nouveau sur F5. Assurez-vous que le code s'immobilise sur le point d'arrêt défini précédemment dans la méthode Execute.

  8. Appuyez une dernière fois sur F5. Le site SharePoint s'ouvre sur la liste Employés.

  9. Dans la zone de lancement rapide, cliquez sur la liste Employees.

  10. Tenez compte des remarques suivantes :

    • L'élément Alex Roland que vous avez ajouté manuellement figure toujours dans la liste.

    • Les colonnes Téléphone professionnel et Adresse de messagerie ne sont pas affichées dans cette vue de la liste.

    La configuration du déploiement Mettre à niveau modifie l'instance de liste Employees existante sur le site SharePoint. Si vous aviez utilisé la configuration de déploiement Par défaut au lieu de la configuration Mettre à niveau, un conflit de déploiement se produirait. Visual Studio résoudrait le conflit en remplaçant la liste Employees et en supprimant l'élément Alex Roland.

Nettoyage de l'ordinateur de développement

Une fois le test de l'étape de déploiement de mise à niveau terminée, supprimez l'instance de liste et la définition de liste du site SharePoint et éliminez l'extension de l'étape de déploiement dans Visual Studio.

Pour supprimer l'instance de liste du site SharePoint

  1. Ouvrez la liste Employés sur le site SharePoint, le cas échéant.

  2. Dans le Ruban du site SharePoint, cliquez sur l'onglet Liste.

  3. Dans le groupe Paramètres de l'onglet Liste, cliquez sur Paramètres de la liste.

  4. Sous Autorisations et gestion, cliquez sur Supprimer cette liste. Cliquez sur OK pour confirmer l'envoi de la liste à la Corbeille.

  5. Fermez le navigateur Web.

Pour supprimer le définition de liste du site SharePoint

  • Dans l'instance expérimentale de Visual Studio, dans le menu Générer, sélectionnez Retirer.

    Visual Studio retire la définition de liste du site SharePoint.

Pour désinstaller l'extension

  1. Dans l'instance expérimentale de Visual Studio, dans le menu Outils, cliquez sur Gestionnaire d'extensions.

    La boîte de dialogue Gestionnaire d'extensions s'ouvre.

  2. Dans la liste des extensions, cliquez sur Étape de déploiement de mise à niveau pour les projets SharePoint, puis cliquez sur Désinstaller.

  3. Dans la boîte de dialogue qui s'affiche, cliquez sur Oui pour confirmer que vous voulez désinstaller l'extension.

  4. Cliquez sur Redémarrer maintenant pour terminer l'installation.

  5. Fermez les deux instances de Visual Studio (l'instance expérimentale et l'instance de Visual Studio dans laquelle la solution UpgradeDeploymentStep est ouverte).

Voir aussi

Autres ressources

Extension de la création de packages et du déploiement SharePoint