Procedura: pubblicare più progetti in una soluzione
Una soluzione può contenere più progetti, ma la distribuzione ClickOnce è vincolata in quanto può pubblicare solo un progetto alla volta. Se si lavora su soluzioni con più progetti, pubblicare un progetto alla volta può essere un'operazione gravosa. In questa procedura viene illustrato come automatizzare il processo, utilizzando una macro per pubblicare tutti i progetti in una soluzione.
Per creare la macro di pubblicazione
Aprire Esplora macro. Scegliere Macro dal menu Strumenti, quindi Esplora macro.
Creare un nuovo modulo macro. In Esplora macro, selezionare il nodo MyMacros. Scegliere Macro dal menu Strumenti, quindi Nuovo modulo macro. Assegnare il nome PublishAllProjects al modulo.
In Esplora macro, aprire il nodo MyMacros, quindi fare doppio clic sul modulo PublishAllProjects per aprirlo. In alternativa, scegliere Macro dal menu Strumenti, quindi IDE macro.
In IDE macro, aggiungere il seguente codice al modulo, dopo le istruzioni 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
Chiudere IDE macro. La stato attivo ritornerà su Visual Studio.
Per pubblicare tutti i progetti in una soluzione
Creare un progetto Applicazione Windows di Visual Basic. Scegliere Nuovo progetto dal menu File.
Nella finestra di dialogo Nuovo progetto fare clic sul nodo Visual Basic e selezionare un progetto Applicazione Windows. Denominare il progetto MultiProj.
Aggiungere due ulteriori progetti Applicazione Windows alla soluzione MultiProj. Denominarli Proj1 e Proj2.
Pubblicare ciascun progetto prima nella soluzione. La macro richiede che i manifesti ClickOnce siano firmati e che l'area di sicurezza sia impostata per ciascun progetto. Pubblicando ciascun progetto utilizzando l'ambiente di sviluppo integrato (IDE, Integrated Development Environment) prima di utilizzare la macro, il processo di pubblicazione firmerà i manifesti ClickOnce e imposterà l'area di sicurezza. Tali operazioni sono necessarie affinché la macro possa essere eseguita.
In Esplora soluzioni selezionare MultiProj. Scegliere Proprietà dal menu Progetto. Scegliere la scheda Pubblica in Progettazione progetti. Sulla pagina Pubblica, specificare publish\ come percorso di pubblicazione, quindi fare clic su Pubblica.
Ripetere questa procedura per gli altri progetti nella soluzione.
Pubblicare nuovamente MultiProj richiamando la macro nella finestra di comando di Visual Studio. Per visualizzare la Finestra di comando, scegliere Altre finestre dal menu Visualizza, quindi Finestra di comando oppure premere CTRL+ALT+A. In Finestra di comando, digitare macros. Verrà fornito un elenco di macro disponibili tramite la funzionalità Completamento automatico. Selezionare la macro seguente e premere Invio:
Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution
Al completamento del processo di pubblicazione di ciascun progetto verrà visualizzato il messaggio "Publish succeeded for MultiProj\MultiProj.vbproj". Scegliere OK in ogni finestra di messaggio.
Controllare le sottodirectory di pubblicazione per ogni directory di progetto. Dovrebbero essere presenti i manifesti, setup.exe e i file delle pagine Web di pubblicazione.
Vedere anche
Attività
Procedura: modificare e creare macro a livello di codice
Procedura: pubblicare un progetto dotato di impostazioni locali specifiche
Riferimenti
Concetti
Pubblicazione di applicazioni ClickOnce