Поделиться через


Практическое руководство. Публикация нескольких проектов в решении

Обновлен: Ноябрь 2007

Решение может содержать несколько проектов, но развертывание ClickOnce ограничено тем, что за один раз оно может опубликовать только один проект. Для решений с несколькими проектами публикация этих проектов один за другим может быть утомительной. Эта процедура показывает, как автоматизировать процесс с использованием макроса для публикации всех процессов в решении.

Создание макроса публикации

  1. Откройте обозреватель макросов. Из меню Сервис выберите Макрос, затем Обозреватель макросов.

  2. Создайте новый модуль макроса В обозревателе макросов выберите узел MyMacros. Из меню Сервис выберите Макрос, затем Создать макромодуль. Назовите модуль PublishAllProjects.

  3. В обозревателе макросов раскройте узел MyMacros, а затем откройте модуль PublishAllProjects, дважды щелкнув его (или из меню Сервис выберите Макрос, после чего выберите Интегрированная среда разработки макросов).

  4. В интегрированной среде разработки макросов добавьте в модуль следующий код, после операторов 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. Закройте интегрированную среду разработки макросов. Фокус возвратится в Visual Studio.

Публикация всех проектов в решении

  1. Создайте проект приложения Windows Visual Basic. В меню Файл выберите команду Создать проект.

  2. В диалоговом окне Создание проекта выберите Приложение Windows из узла Visual Basic. Назовите проект MultiProj.

  3. Добавьте два проекта приложений Windows в решение MultiProj. Назовите их как Proj1 и Proj2.

  4. Вначале опубликуйте в решении оба проекта. Макрос требует, чтобы были подписаны манифесты ClickOnce и была установлена зона безопасности для каждого из проектов. При публикации каждого проекта с использованием интегрированной среды разработки (IDE) перед использованием макроса процесс публикации подписывает манифесты ClickOnce и устанавливает зону безопасности, что необходимо для выполнения макроса.

    В обозревателе решений выберите MultiProj. В меню Проект выберите пункт Свойства. В конструкторе проектов перейдите на вкладку Публикация. На странице Публикация укажите местоположение для публикации publish\, затем нажмите Опубликовать сейчас.

    Повторите эти шаги для других проектов в решении.

  5. Вновь опубликуйте MultiProj, вызвав макрос в окне команд Visual Studio. Чтобы просмотреть окно команд, в меню Вид выберите Другие окна, затем Окно команд или нажмите сочетание клавиш CTRL+ALT+A. В окне команд введите macros; автозаполнение предоставит список доступных макросов. Выберите следующий макрос и нажмите клавишу ВВОД.

    Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution

  6. При успешном завершении процесса публикации для каждого проекта выводится сообщение "Публикация успешно завершена для MultiProj\MultiProj.vbproj". Для каждого окна сообщения нажмите кнопку "ОК".

  7. Просмотрите подкаталоги публикации в каталоге каждого проекта. Должны быть видны манифесты, файл setup.exe и файлы веб-страницы публикации.

См. также

Задачи

Практическое руководство. Изменение и программное создание макросов

Практическое руководство. Публикация проекта, имеющего конкретный языковый стандарт

Ссылки

Окно "Обозреватель макросов"

Другие ресурсы

Публикация ClickOnce-приложений

Среда разработки макросов