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 un personnalisé 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 la finalité des commandes SharePoint, consultez appeler des modèles d’objet SharePoint.For more information about the purpose of SharePoint commands, see Call 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 le .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 toutes les commandes SharePoint qui sont utilisés 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éployer des extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploy 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 la 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 des outils SharePoint à 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 cette étape est facultative.It can have a return value, but this is optional.

    • La deuxième paramètre et valeur 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 aucune 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 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 des 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 avec l’identificateur Contoso.Commands.UpgradeSolution.The following code example demonstrates a SharePoint command that has the identifier Contoso.Commands.UpgradeSolution. Cette commande utilise les API dans le modèle objet serveur pour 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ée qui contient le chemin d’accès complet du fichier .wsp qui est 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éer une étape de déploiement personnalisée pour les projets SharePoint.To see this code in the context of a larger example, see Walkthrough: Create 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 extension (vsix) package 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éployer des extensions pour les outils SharePoint dans Visual Studio.For more information, see Deploy extensions for the SharePoint tools in Visual Studio.

Voir aussiSee also

Appeler des modèles d’objet SharePoint Call into the SharePoint object models
Comment : exécuter une commande SharePoint How to: Execute a SharePoint command
Procédure pas à pas : Étendre l’Explorateur de serveurs pour afficher des WebPartsWalkthrough: Extend Server Explorer to display web parts