Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Nous recommandons d’utiliser Visual Studio 2017

Comment : répondre aux événements de publication ClickOnce

Les macros complémentaires Visual Studio sont déconseillées dans Visual Studio 2013. Vous devriez mettre vos macros complémentaires à niveau vers des extensions VSPackage. Pour plus d'informations sur les mises à jour, consultez FAQ : conversion de compléments en extensions VSPackage.

ClickOnce vous permet de publier des applications Windows sur un serveur Web ou un partage de fichiers réseau pour simplifier l'installation. Pour plus d'informations, consultez Sécurité et déploiement ClickOnce.

Le modèle Automation principal Visual Studio (contenu dans EnvDTE80) comporte un objet de gestion des événements nommé PublishEvents. Vous pouvez l'utiliser pour détecter le début (OnPublishBegin) et la (OnPublishDone) d'un déploiement ClickOnce. Selon ces événements, vous pouvez exécuter une action. La procédure suivante montre comment gérer ces événements.

Remarque Remarque

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importation et exportationde paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour répondre aux événements ClickOnce

  1. Dans un complément nouveau ou existant, ajoutez le code suivant à la classe Connect.

  2. Générez et activez le complément comme décrit dans Comment : contrôler des compléments avec le Gestionnaire de compléments.

  3. Commencez une opération de déploiement ClickOnce comme décrit dans Sécurité et déploiement ClickOnce.

    Un message s'affiche lorsque le déploiement commence et se termine.

using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
namespace MyAddin2
{
    public class Connect : IDTExtensibility2
    {
        public Connect()
        {
        }

        public void OnConnection(object application,   
           ext_ConnectMode connectMode, object addInInst, ref Array 
           custom)
        {
            _applicationObject = (DTE2)application;
            _addInInstance = (AddIn)addInInst;
            try
            {
                _applicationObject = (DTE2)application;
                _addInInstance = (AddIn)addInInst;
                EnvDTE80.Events2 events;
                events = (Events2)_applicationObject.Events;
                // Retrieve the delegates for the Publish events.
                pubEvents = (EnvDTE80.PublishEvents)
                  events.PublishEvents;
                // Connect to the delegates exposed from the Publish 
                // objects retrieved above.
                pubEvents.OnPublishBegin += new 
                    _dispPublishEvents_OnPublishBeginEventHandler
                    (this.OnPublishBegin);
                pubEvents.OnPublishDone += new 
                    _dispPublishEvents_OnPublishDoneEventHandler
                    (this.OnPublishDone);
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }
        }

        // When the Publish operation is done, disconnect the event 
        // handlers to prevent slowing of your system.
        public void OnDisconnection(ext_DisconnectMode disconnectMode, 
            ref Array custom)
        {
            if (pubEvents != null)
            {
                pubEvents.OnPublishBegin -= new 
                    _dispPublishEvents_OnPublishBeginEventHandler
                    (this.OnPublishBegin);
                pubEvents.OnPublishDone -= new 
                    _dispPublishEvents_OnPublishDoneEventHandler
                    (this.OnPublishDone);
            }
        }

        // The Publish events.
        public void OnPublishBegin(ref bool pubContinue)
        {
            if (pubContinue == true)
            {
                System.Windows.Forms.MessageBox.Show
                    ("A publish event is occuring…");
            }
            else
            {
                System.Windows.Forms.MessageBox.Show
                    ("A publish event has halted.");
            }
        }

        public void OnPublishDone(bool success)
        {
            if (success == true)
            {
                System.Windows.Forms.MessageBox.Show
                    ("A publish event has completed.");
            }
            else
            {
                System.Windows.Forms.MessageBox.Show
                    ("A publish event did not succeed.");
            }
        }
        
        public void OnAddInsUpdate(ref Array custom)
        {
        }

        public void OnStartupComplete(ref Array custom)
        {
        }

        public void OnBeginShutdown(ref Array custom)
        {
        }
        
        private EnvDTE80.PublishEvents pubEvents;
        private DTE2 _applicationObject;
        private AddIn _addInInstance;
    }
}
Afficher: