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
Ouvrez l'Explorateur de macros. Dans le menu Outils, cliquez sur Macros, puis sur Explorateur de macros.
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.
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).
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
Fermez l'Éditeur de macros. Le focus retourne dans Visual Studio.
Pour générer tous les projets d'une solution
Créez un projet d'application Windows Visual Basic. Dans le menu Fichier, cliquez sur Nouveau projet.
Dans la boîte de dialogue Nouveau projet, sélectionnez Application Windows dans le nœud Visual Basic. Nommez le projet MultiProj.
Ajoutez deux projets d'application Windows supplémentaires à la solution MultiProj. Nommez-les Proj1 et Proj2.
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.
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
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.
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
Comment : modifier et créer des macros par programmation
Comment : publier un projet qui a des paramètres régionaux spécifiques
Référence
Concepts
Publication d'applications ClickOnce