Comment : créer une commande SharePointHow to: Create a SharePoint Command

Si vous souhaitez utiliser le modèle objet serveur dans une extension des outils SharePoint, vous devez créer une personnalisée commande SharePoint pour appeler l’API.If you want to use the server object model in a SharePoint tools extension, you must create a custom SharePoint command to call the API. Vous définissez la commande SharePoint dans un assembly qui peut appeler directement dans le modèle objet serveur.You define the SharePoint command in an assembly that can call into the server object model directly.

Pour plus d’informations sur l’objectif de commandes SharePoint, consultez appel des modèles d’objet SharePoint.For more information about the purpose of SharePoint commands, see Calling into the SharePoint Object Models.

Pour créer une commande SharePointTo create a SharePoint command

  1. Créez un projet de bibliothèque de classes qui dispose de la configuration suivante :Create a class library project that has the following configuration:

    Note

    Vous ne pouvez pas implémenter une commande SharePoint dans le même projet qui définit une extension des outils SharePoint, car les commandes SharePoint ciblent le .NET Framework 3.5 et SharePoint tools extensions la cible du .NET Framework 4.NET Framework 4.You cannot implement a SharePoint command in the same project that defines a SharePoint tools extension, because SharePoint commands target the .NET Framework 3.5 and SharePoint tools extensions target the .NET Framework 4.NET Framework 4. Vous devez définir des commandes SharePoint utilisées par votre extension dans un projet distinct.You must define any SharePoint commands that are used by your extension in a separate project. Pour plus d’informations, consultez déploiement d’Extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploying Extensions for the SharePoint Tools in Visual Studio.

  2. Ajoutez des références aux assemblys suivants :Add references to the following assemblies:

    • Microsoft.VisualStudio.SharePoint.CommandsMicrosoft.VisualStudio.SharePoint.Commands

    • Microsoft.SharePointMicrosoft.SharePoint

  3. Dans une classe dans le projet, créez une méthode qui définit votre commande SharePoint.In a class in the project, create a method that defines your SharePoint command. La méthode doit respecter les consignes suivantes :The method must conform to the following guidelines:

    • Il peut avoir un ou deux paramètres.It can have one or two parameters.

      Le premier paramètre doit être un ISharePointCommandContext objet.The first parameter must be a ISharePointCommandContext object. Cet objet fournit les Microsoft.SharePoint.SPSite Microsoft.SharePoint.SPWeb dans lequel la commande est exécutée.This object provides the Microsoft.SharePoint.SPSite or Microsoft.SharePoint.SPWeb in which the command is executed. Il fournit également un ISharePointCommandLogger objet qui peut être utilisé pour écrire des messages dans la sortie fenêtre ou liste d’erreurs fenêtre dans Visual Studio.It also provides an ISharePointCommandLogger object that can be used to write messages to the Output window or Error List window in Visual Studio.

      Le deuxième paramètre peut être un type de votre choix, mais ce paramètre est facultatif.The second parameter can be a type of your choice, but this parameter is optional. Vous pouvez ajouter ce paramètre à votre commande SharePoint si vous avez besoin passer des données à partir de votre extension d’outils SharePoint pour la commande.You can add this parameter to your SharePoint command if you need to pass data from your SharePoint tools extension to the command.

    • Il peut avoir une valeur de retour, mais ce paramètre est facultatif.It can have a return value, but this is optional.

    • La deuxième valeur de paramètre et de retour doit être un type qui peut être sérialisé par Windows Communication Foundation (WCF).The second parameter and return value must be a type that can be serialized by the Windows Communication Foundation (WCF). Pour plus d’informations, consultez Types pris en charge par le sérialiseur de contrat de données et à l’aide de la classe XmlSerializer.For more information, see Types Supported by the Data Contract Serializer and Using the XmlSerializer Class.

    • La méthode peut avoir n’importe quelle visibilité (public, interne, ou privé), et il peut être statique ou non statique.The method can have any visibility (public, internal, or private), and it can be static or non-static.

  4. Appliquer le SharePointCommandAttribute à la méthode.Apply the SharePointCommandAttribute to the method. Cet attribut spécifie un identificateur unique pour la commande ; Cet identificateur n’a pas correspondre au nom de la méthode.This attribute specifies a unique identifier for the command; this identifier does not have to match the method name.

    Vous devez spécifier le même identificateur unique lorsque vous appelez la commande à partir de votre extension d’outils SharePoint.You must specify the same unique identifier when you call the command from your SharePoint tools extension. Pour plus d’informations, consultez Comment : exécuter une commande SharePoint.For more information, see How to: Execute a SharePoint Command.

ExempleExample

L’exemple de code suivant montre une commande SharePoint qui a l’identificateur Contoso.Commands.UpgradeSolution.The following code example demonstrates a SharePoint command that has the identifier Contoso.Commands.UpgradeSolution. Cette commande utilise des API dans le modèle objet serveur à mettre à niveau vers une solution déployée.This command uses APIs in the server object model to upgrade to a deployed solution.

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

En plus de la première implicite ISharePointCommandContext paramètre, cette commande a également un paramètre de chaîne personnalisé qui contient le chemin d’accès complet du fichier .wsp mis à niveau vers le site SharePoint.In addition to the implicit first ISharePointCommandContext parameter, this command also has a custom string parameter that contains the full path of the .wsp file that is being upgraded to the SharePoint site. Pour voir ce code dans le contexte d’un exemple plus complet, consultez procédure pas à pas : création d’une étape de déploiement personnalisée pour les projets SharePoint.To see this code in the context of a larger example, see Walkthrough: Creating a Custom Deployment Step for SharePoint Projects.

Compilation du codeCompiling the Code

Cet exemple nécessite des références aux assemblys suivants :This example requires references to the following assemblies:

  • Microsoft.VisualStudio.SharePoint.CommandsMicrosoft.VisualStudio.SharePoint.Commands

  • Microsoft.SharePointMicrosoft.SharePoint

Déploiement de la commandeDeploying the Command

Pour déployer la commande, incluez l’assembly de commande dans le même Visual StudioVisual Studio package d’extension (VSIX) avec l’assembly d’extension qui utilise la commande.To deploy the command, include the command assembly in the same Visual StudioVisual Studio extension (VSIX) package with the extension assembly that uses the command. Vous devez également ajouter une entrée pour l’assembly de commande dans le fichier extension.vsixmanifest.You must also add an entry for the command assembly in the extension.vsixmanifest file. Pour plus d’informations, consultez déploiement d’Extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploying Extensions for the SharePoint Tools in Visual Studio.

Voir aussiSee Also

Appel des modèles d’objet SharePoint Calling into the SharePoint Object Models
Comment : exécuter une commande SharePoint How to: Execute a SharePoint Command
Procédure pas à pas : extension de l’Explorateur de serveurs pour afficher des composants WebPartWalkthrough: Extending Server Explorer to Display Web Parts