Condividi tramite


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

  1. Aprire Esplora macro. Scegliere Macro dal menu Strumenti, quindi Esplora macro.

  2. 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.

  3. 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.

  4. 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
    
  5. Chiudere IDE macro. La stato attivo ritornerà su Visual Studio.

Per pubblicare tutti i progetti in una soluzione

  1. Creare un progetto Applicazione Windows di Visual Basic. Scegliere Nuovo progetto dal menu File.

  2. Nella finestra di dialogo Nuovo progetto fare clic sul nodo Visual Basic e selezionare un progetto Applicazione Windows. Denominare il progetto MultiProj.

  3. Aggiungere due ulteriori progetti Applicazione Windows alla soluzione MultiProj. Denominarli Proj1 e Proj2.

  4. 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.

  5. 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

  6. 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.

  7. 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

Finestra Esplora macro

Concetti

Pubblicazione di applicazioni ClickOnce

Altre risorse

Ambiente di sviluppo delle macro