Partager via


Procédure pas à pas : créer une fonctionnalité de projet simple se déclenchant lors du chargement des projets

Vous pouvez créer une fonctionnalité de projet pour exécuter des actions personnalisées lorsque des actions ayant trait au projet se produisent. Dans cette procédure pas à pas, créez une fonctionnalité de projet nommée SampleProjectFeature qui affiche une boîte de dialogue lors du chargement d'un projet de base de données. Vous pouvez modifier cet exemple pour exécuter des actions lors du chargement du projet de base de données.

Dans cette procédure pas à pas, vous effectuerez les principales tâches suivantes :

  • Créer un package Visual Studio

  • Définir une fonctionnalité de projet

  • Tester sa fonctionnalité de projet

Composants requis

Pour exécuter cette procédure pas à pas, vous devez disposer des composants suivants :

  • Vous devez avoir installé Visual Studio 2010 Professional, Visual Studio 2010 Premium ou Visual Studio 2010 Ultimate.

  • Vous devez disposer d'un projet de base de données.

  • Kit de développement logiciel (SDK) Visual Studio 2010 doit également être installé sur votre ordinateur. Pour télécharger ce kit, reportez-vous à la page suivante sur le site Web Microsoft : Kit de développement Visual Studio 2010 SDK (page éventuellement en anglais).

Notes

Cette procédure pas à pas est destinée aux utilisateurs qui sont déjà familiarisés avec les fonctionnalités de base de données de Visual Studio. Vous êtes également censé connaître les concepts Visual Studio de base, tels que les modes de création d'une bibliothèque de classes et d'utilisation de l'éditeur de code pour ajouter du code à une classe.

Créer un package Visual Studio

Pour démarrer l'Assistant Visual Studio Integration Package

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

  2. Dans la liste des Modèles installés, développez le nœud Autres types de projets et cliquez sur le nœud Extensibilité.

  3. Dans le volet d'informations, cliquez sur Package Visual Studio.

    Important

    Si vous n'avez pas installé Kit de développement logiciel (SDK) Visual Studio 2010, le type de projet Visual Studio Integration Package n'est pas disponible.

  4. Dans Nom, tapez SampleProjectFeature.

  5. Cliquez sur OK.

    L'Assistant Visual Studio Integration Package apparaît alors.

    Ensuite, utilisez l'Assistant pour configurer le projet à créer.

Pour utiliser l'Assistant Visual Studio Integration Package pour créer votre projet

  1. Cliquez sur Suivant.

  2. Dans Choisir la langue, cliquez sur Visual C#.

    Notes

    Vous pouvez également créer le package à l'aide de Visual Basic ou de Visual C++. Cette procédure pas à pas affiche uniquement l'exemple de code pour Visual Basic et Visual C#.

  3. Dans Obtenir des clés pour la signature de l'assembly, cliquez sur Générer un nouveau fichier de clé pour signer l'assembly.

  4. Cliquez sur Suivant.

  5. Dans Nom de la société, tapez MaSociété.

  6. Dans Nom VSPackage, tapez SampleProjectFeature.

  7. (Facultatif) Vous pouvez fournir un numéro de version spécifique.

  8. (Facultatif) Vous pouvez personnaliser l'icône utilisée par votre package.

  9. (Facultatif) Vous pouvez fournir des informations supplémentaires concernant votre package dans Informations détaillées.

  10. Cliquez sur Suivant.

  11. Activez la case à cocher Commande de menu.

  12. Vérifiez que les cases à cocher Fenêtre Outil et Éditeur personnalisé sont désactivées.

  13. Cliquez sur Suivant.

  14. Dans Nom de commande, tapez Activer/désactiver des boîtes de dialogue chargées du projet.

  15. Dans ID de commande, tapez cmdidEnableDialogs.

  16. Cliquez sur Suivant.

  17. Désactivez les cases à cocher Projet de test d'intégration et Projet de test unitaire.

    Notes

    Si vous créiez un vrai package pour une utilisation par votre organisation, créez des tests pour votre package afin de vérifier qu'il fonctionne correctement.

  18. Cliquez sur Terminer.

    Un projet Visual Studio Integration Package est créé et apparaît dans l'Explorateur de solutions.

    Ensuite, personnalisez le code dans le package pour définir votre fonctionnalité de projet de base de données.

Définir une fonctionnalité de projet

Pour modifier la définition de package afin de définir une fonctionnalité de projet de base de données, vous devez mettre à jour la définition de package puis ajouter la classe SampleProjectFeature.

Pour mettre à jour la définition de package

  1. Dans l'Explorateur de solutions, double-cliquez sur SampleProjectFeaturePackage.cs pour l'ouvrir dans l'éditeur de code.

  2. Dans l'éditeur de code, recherchez la méthode MenuItemCallback.

  3. Remplacez la définition de méthode par le code suivant :

            private void MenuItemCallback(object sender, EventArgs e)
            {
                SampleProjectFeature.EnableDialogs = !SampleProjectFeature.EnableDialogs;
            }
    

    Notes

    Une erreur s'affiche dans la liste d'erreurs, car vous n'avez pas encore défini la classe SampleProjectFeature et la méthode EnableDialogs.

  4. Dans le menu Fichier, cliquez sur Enregistrer SampleProjectFeaturePackage.cs.

    Définissez ensuite la classe de la fonctionnalité de projet.

Pour définir la classe SampleProjectFeature

  1. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet SampleProjectFeature, pointez sur Ajouter, puis cliquez sur Classe.

    La boîte de dialogue Ajouter un nouvel élément s'affiche alors, avec le modèle de classe déjà mis en surbrillance.

  2. Dans Nom, tapez SampleProjectFeature.cs.

  3. Cliquez sur Ajouter.

    La nouvelle classe est ajoutée à votre projet et l'éditeur de code apparaît et affiche la définition de classe.

  4. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Ajouter une référence.

    La boîte de dialogue Ajouter une référence s'affiche.

  5. Cliquez sur l'onglet .NET.

  6. Dans la liste des composants, mettez en surbrillance les références suivantes, puis cliquez sur OK :

    • Microsoft.Data.Schema

    • Microsoft.VisualStudio.Data.Schema.Package

  7. Dans l'éditeur de code, ajoutez les instructions Using suivantes à la définition de classe :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Microsoft.Data.Schema.Extensibility;
    using Microsoft.Data.Schema;
    using Microsoft.VisualStudio.Data.Schema.Package.Project;
    using Microsoft.VisualStudio.Shell.Interop;
    using System.Globalization;
    
  8. Modifiez la définition de classe pour spécifier la classe de base et fournir l'attribut qui spécifie les fournisseurs de schémas de base de données avec lesquels cette fonctionnalité est compatible. Pour cette procédure pas à pas, l'exemple est compatible avec tous les fournisseurs de schémas de base de données.

        [DatabaseSchemaProviderCompatibility(typeof(DatabaseSchemaProvider))]
        class SampleProjectFeature : IDatabaseProjectFeature
        {
        }
    

    Les interfaces, les types et les méthodes de clés sont DatabaseSchemaProviderCompatibilityAttribute, DatabaseSchemaProvider et IDatabaseProjectFeature.

  9. Ajoutez une paire de propriétés à votre classe :

            public static bool EnableDialogs { get; set; }
            private IDatabaseProjectNode ProjectNode { get; set; }
    

    La première propriété est utilisée par la commande qui peut activer ou désactiver cette fonctionnalité de projet. IDatabaseProjectNode est une interface à retenir.

  10. Ajoutez le constructeur suivant à la classe :

            static SampleProjectFeature()
            {
                EnableDialogs = true;
            }
    

    Le constructeur initialise la propriété EnableDialogs.

  11. Ajoutez la méthode Initialize à votre classe :

            public void Initialize(IDatabaseProjectNode projectNode)
            {
                ProjectNode = projectNode;
    
                // Hook up to a few events
                ProjectNode.ProjectLoaded += delegate
                {
                    ShowDialog("In ProjectLoaded Event");
                };
            }
    

    La méthode Initialize identifie le projet auquel la fonctionnalité est appliquée, puis se prépare à surveiller l'événement ProjectLoaded.

  12. Enfin, ajoutez la méthode ShowDialog qui affiche une boîte de dialogue lorsqu'un événement ProjectLoaded se produit, si la fonction est activée :

            void ShowDialog(string msg)
            {
                if (!SampleProjectFeature.EnableDialogs)
                    return;
    
                // Show a Message Box to indicate that we were here
                IVsUIShell uiShell = (IVsUIShell)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(SVsUIShell));
                Guid clsid = Guid.Empty;
                int result;
                Microsoft.VisualStudio.ErrorHandler.ThrowOnFailure(uiShell.ShowMessageBox(
                           0,
                           ref clsid,
                           "Simple Project Feature",
                           msg,
                           string.Empty,
                           0,
                           OLEMSGBUTTON.OLEMSGBUTTON_OK,
                           OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST,
                           OLEMSGICON.OLEMSGICON_INFO,
                           0,        // false
                           out result));
            }
    

    Si l'utilisateur a désactivé la fonctionnalité à l'aide de la commande de menu, la méthode est alors retournée. Sinon, cette méthode affiche une boîte de dialogue. Dans votre propre fonctionnalité de projet, au lieu d'afficher une boîte de dialogue, vous pouvez exécuter un traitement supplémentaire.

  13. Dans le menu Fichier, cliquez sur Enregistrer SampleProjectFeature.cs.

Il est temps à présent de générer le projet.

Pour générer le projet

  • Dans le menu Générer, cliquez sur Générer la solution.

Vous allez, à présent, collecter les informations de l'assembly générées dans le projet, notamment la version, la culture et PublicKeyToken.

Pour collecter des informations de l'assembly

  1. Ouvrez le menu Démarrer, pointez sur Microsoft Visual Studio 2010, sur Visual Studio Tools, puis cliquez sur Invite de commandes de Visual Studio 2010.

  2. Naviguez jusqu'au dossier qui contient votre assembly généré (SampleProjectFeature.dll).

  3. Tapez la ligne de commande suivante :

    SN.EXE -T SampleProjectFeature.dll

  4. Notez le jeton de clé publique. Il sera utilisé dans la procédure suivante.

Ensuite, vous créez un fichier XML en utilisant les informations d'assembly collectées lors de la procédure précédente.

Pour créer le fichier XML

  1. Dans l'Explorateur de solutions, sélectionnez le projet SampleProjectFeature.

  2. Dans le menu Projet, cliquez sur Ajouter un nouvel élément.

  3. Dans le volet Modèles, recherchez et sélectionnez l'élément Fichier XML.

  4. Dans la zone de texte Nom, tapez SampleProjectFeature.Extensions.xml, puis cliquez sur le bouton Ajouter.

    Le fichier SampleProjectFeature.Extensions.xml est ajouté au projet dans l'Explorateur de solutions.

  5. Ouvrez le fichier SampleProjectFeature.Extensions.xml et mettez-le à jour pour qu'il corresponde au fichier XML suivant. Remplacez le PublicKeyToken que vous avez extrait au cours de la procédure précédente.

    <?xml version="1.0" encoding="utf-8"?>
    <extensions assembly=""
                version="1" xmlns="urn:Microsoft.Data.Schema.Extensions"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="urn:Microsoft.Data.Schema.Extensions Microsoft.Data.Schema.Extensions.xsd">
    
      <extension type=" MyCompany.SampleProjectFeature.SampleProjectFeature" assembly="SampleProjectFeature, Version=1.0.0.0, Culture=neutral, PublicKeyToken=nnnnnnnnnnnnnnnn" enabled="true"/>
    </extensions>
    
  6. Dans le menu Fichier, cliquez sur Enregistrer.

Ensuite, modifiez les propriétés du fichier Extensions.xml pour l'inclure dans le vsixmanifest.

Pour inclure SampleProductFeature.Extensions.xml dans le vsixmanifest

  1. Dans l'Explorateur de solutions, cliquez sur SampleProjectFeature.Extensions.xml.

  2. Dans la fenêtre Propriétés, affectez à la propriété Action de génération la valeur Contenu.

  3. Attribuez à la propriété Inclure dans VSIX la valeur True.

  4. Dans le menu Fichier, cliquez sur Enregistrer tout.

  5. Dans le menu Générer, cliquez sur Générer SampleProjectFeature.

    Le fichier vsixmanifest est mis à jour. Ensuite, vous pouvez tester la fonctionnalité de votre projet.

Tester sa fonctionnalité de projet

Pour tester votre fonctionnalité de projet, vous devez d'abord le générer, puis, vous pouvez appuyer sur F5 pour démarrer la génération expérimentale de Visual Studio.

Pour générer et tester votre fonctionnalité de projet de base de données

  1. Dans le menu Projet, cliquez sur Générer.

    Votre projet doit être correctement généré.

  2. Appuyez sur F5 pour exécuter votre package dans la génération expérimentale de Visual Studio.

    Une instance expérimentale de Visual Studio apparaît alors. Dans le menu Outils, la commande Activer/désactiver des boîtes de dialogue chargées du projet apparaît.

  3. Dans le menu Fichier, pointez sur Ouvrir, puis cliquez sur Projet/Solution.

  4. Accédez au projet de base de données (.dbproj) à ouvrir, puis cliquez sur Ouvrir.

    Une fois votre projet de base de données chargé, une boîte de dialogue s'affiche avec le message "Simple Project Feature In ProjectLoaded Event" (Fonctionnalité de projet simple dans l'événement ProjectLoaded).

    À ce stade, vous pouvez personnaliser votre fonctionnalité de projet pour ajouter des fonctions supplémentaires.

Étapes suivantes

Si vous copiez la fonctionnalité que vous avez créée dans cette procédure pas à pas comme un point de départ pour votre propre travail, vous devez :

  • donner un nom unique à votre extension

  • donner un GUID unique à votre extension

Lorsque vous créez un nouveau package à l'aide de l'Assistant Visual Studio Integration Package, un nouveau GUID est créé pour vous.

Pour que le package soit disponible dans des instances normales de Visual Studio, vous devez l'inscrire. Pour plus d'informations sur les VSPackages, consultez :

Voir aussi

Tâches

How to: Troubleshoot VSPackages

Concepts

Extension des fonctionnalités de base de données de Visual Studio

Vue d'ensemble des projets de base de données et serveur

Autres ressources

Créer des fonctionnalités personnalisées pour des projets de base de données

Historique des modifications

Date

Historique

Motif

Juillet 2010

Une correction mineure a été apportée au fichier Extensions.xml pour résoudre un problème identifié par un client.

Commentaires client.