Comment : publier plusieurs projets dans une solution

Une solution peut contenir plusieurs projets, mais le déploiement ClickOnce ne peut publier qu'un seul projet à la fois. Pour les solutions avec de nombreux projets, leur publication séquentielle peut être fastidieuse. Cette procédure indique comment automatiser le processus à l'aide d'une macro pour publier tous les projets d'une solution.

Pour créer la macro de publication

  1. Ouvrez l'Explorateur de macros. Dans le menu Outils, cliquez sur Macros, puis sur Explorateur de macros.

  2. Créez un module de macro. Dans l'Explorateur de macros, sélectionnez le nœud MyMacros. Dans le menu Outils, cliquez sur Macros, puis sur Nouveau module de macro. Nommez le module PublierTousProjects.

  3. Dans l'Explorateur de macros, ouvrez le nœud MyMacros, puis ouvrez le module PublierTousProjets en double-cliquant dessus (ou dans le menu Outils, cliquez sur Macros, puis sur Éditeur de macros).

  4. Dans l'Éditeur de macros, ajoutez le code suivant au module, après les instructions Import :

    Public Module PublishAllProjects
        Sub PublishAllProjectsInSolution()
            ' Before using this macro, the certficate and security zone must be set.
            ' You can do this by publishing the projects using the VS IDE.
            Dim slnbld2 As SolutionBuild2 = CType(DTE.Solution.SolutionBuild, SolutionBuild2)
    
            'Save changes to all projects and clean.
            For Each proj As Project In DTE.Solution.Projects
                proj.Save()
            Next
            slnbld2.Clean(True)
    
            For Each proj As Project In DTE.Solution.Projects
                'Verify project is a windows application or console application before continuing
                Dim outputType As Integer = proj.Properties.Item("OutputType").Value
                If outputType <> 0 AndAlso outputType <> 1 Then
                    Continue For
                End If
    
                'GenerateManifests and SignManifests must always to true for publishing to work. 
                proj.Properties.Item("GenerateManifests").Value = True
                proj.Properties.Item("SignManifests").Value = True
                proj.Save()
    
                slnbld2.BuildProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)
    
                'only publish if build was successful.
                If slnbld2.LastBuildInfo <> 0 Then
                    MsgBox("Build failed for " & proj.UniqueName)
                Else
                    slnbld2.PublishProject(proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, proj.UniqueName, True)
                    If slnbld2.LastPublishInfo = 0 Then
                        MsgBox("Publish succeeded for " & proj.UniqueName)
                    Else
                        MsgBox("Publish failed for " & proj.UniqueName)
                    End If
                End If
            Next
    
        End Sub
    End Module
    
  5. Fermez l'Éditeur de macros. Le focus retourne dans Visual Studio.

Pour générer tous les projets d'une solution

  1. Créez un projet d'application Windows Visual Basic. Dans le menu Fichier, cliquez sur Nouveau projet.

  2. Dans la boîte de dialogue Nouveau projet, sélectionnez Application Windows dans le nœud Visual Basic. Nommez le projet MultiProj.

  3. Ajoutez deux projets d'application Windows supplémentaires à la solution MultiProj. Nommez-les Proj1 et Proj2.

  4. Publiez d'abord chacun des projets de la solution. La macro nécessite que les manifestes ClickOnce soient signés et que la zone de sécurité soit définie pour chacun des projets. En publiant chaque projet à l'aide de l'environnement de développement intégré (IDE) avant d'utiliser la macro, le processus de publication signe les manifestes ClickOnce et définit la zone de sécurité, éléments nécessaires pour que la macro s'exécute.

    Dans l'Explorateur de solutions, sélectionnez MultiProj. Dans le menu Projet, sélectionnez Propriétés. Dans le Concepteur de projets, cliquez sur l'onglet Publier. Sur la page Publier, spécifiez l'emplacement de publication de publish\, puis cliquez sur Publier maintenant.

    Répétez cette opération pour les autres projets de la solution.

  5. Publiez à nouveau MultiProj en appelant la macro dans la fenêtre de commande Visual Studio. Pour afficher la fenêtre Commande, dans le menu Affichage, cliquez sur Autres fenêtres, puis sur Fenêtre Commande, ou appuyez sur CTRL+ALT+A. Dans la fenêtre Commande, tapez macros ; la saisie semi-automatique propose la liste des macros disponibles. Sélectionnez la macro suivante et appuyez sur Entrée :

    Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution

  6. Lorsque le processus de publication réussit pour chaque projet, vous obtenez un message indiquant que la publication a réussi pour MultiProj\MultiProj.vbproj. Cliquez sur OK dans chaque boîte de message.

  7. Examinez les sous-répertoires de publication de chaque répertoire de projet. Vous devez voir les manifestes, setup.exe et les fichiers de page Web de publication.

Voir aussi

Tâches

How to: Edit and Programmatically Create Macros

Comment : publier un projet qui a des paramètres régionaux spécifiques

Référence

Macro Explorer Window

Concepts

Publication d'applications ClickOnce

Autres ressources

Macros Development Environment