Share via


Cómo: Publicar varios proyectos en un solución

Actualización: noviembre 2007

Una solución puede contener varios proyectos, pero la implementación de ClickOnce está limitada a publicar solo un proyecto a la vez. En soluciones con muchos proyectos, la publicación proyecto por proyecto puede llegar a ser un proceso tedioso. Este procedimiento muestra cómo automatizar el proceso mediante una macro para publicar todos los proyectos de una solución.

Para crear la macro de publicación

  1. Abra el Explorador de macros. En el menú Herramientas, haga clic en Macros y, a continuación, haga clic en Explorador de macros.

  2. Cree un nuevo módulo de macros. En el Explorador de macros, seleccione el nodo MyMacros. En el menú Herramientas, haga clic en Macros y, a continuación, haga clic en Nuevo módulo de macros. Asigne un nombre al módulo PublishAllProjects.

  3. En el Explorador de macros, abra el nodo MyMacros, a continuación, abra el módulo PublishAllProjects haciendo doble clic en él (o en el menú Herramientas, haga clic en Macros y, a continuación, en IDE de macros).

  4. En el IDE de macros, agregue el código siguiente al módulo, después de las instrucciones 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. Cierre el IDE de macros. El foco volverá a Visual Studio.

Para publicar todos los proyectos de una solución

  1. Cree un proyecto de aplicación para Windows en Visual Basic. En el menú Archivo, haga clic en Nuevo proyecto.

  2. En el cuadro de diálogo Nuevo proyecto, seleccione Aplicación para Windows en el nodo Visual Basic. Asigne un nombre al proyecto MultiProj.

  3. Agregue dos proyectos más de aplicaciones para Windows a la solución MultiProj. Asígneles los nombres Proj1 y Proj2 respectivamente.

  4. Publique primero cada uno de los proyectos en la solución. La macro requiere que se firmen los manifiestos de ClickOnce y que se establezca la zona de seguridad de cada uno de los proyectos. Al publicar cada uno utilizando el entorno de desarrollo integrado (IDE) antes de usar la macro, el proceso de publicación firmará los manifiestos de ClickOnce y establecerá la zona de seguridad, pasos necesarios para que se ejecute la macro.

    En el Explorador de soluciones, seleccione MultiProj. En el menú Proyecto, seleccione Propiedades. En el Diseñador de proyectos, haga clic en la ficha Publicar. En la página Publicar, especifique una ubicación de publicación de publicación\ y, a continuación, haga clic en Publicar ahora.

    Repita este procedimiento para los demás proyectos de la solución.

  5. Vuelva a publicar MultiProj invocando la macro en la ventana de comandos de Visual Studio. Para ver la ventana Comandos, en el menú Ver, haga clic en Otras ventanas y, a continuación, haga clic en Ventana Comandos, o presione CTRL+ALT+A. En la ventana Comandos, escriba macros; Autocompletar proporcionará una lista de macros disponibles. Seleccione la siguiente macro y presione Entrar:

    Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution

  6. Cuando el proceso de publicación para cada proyecto haya finalizado correctamente, obtendrá el mensaje "Publicación correcta de MultiProj\MultiProj.vbproj". Haga clic en Aceptar en todos los cuadros de mensaje.

  7. Busque en los subdirectorios de publicación de cada directorio del proyecto. Debería ver los manifiestos, setup.exe y los archivos de la página Web de publicación.

Vea también

Tareas

Cómo: Editar y crear macros mediante programación

Cómo: Publicar un proyecto que tiene una configuración regional específica

Referencia

Explorador de macros (Ventana)

Otros recursos

Publicar aplicaciones ClickOnce

Entorno de desarrollo de macros