Практическое руководство. Публикация нескольких проектов в решении
Обновлен: Ноябрь 2007
Решение может содержать несколько проектов, но развертывание ClickOnce ограничено тем, что за один раз оно может опубликовать только один проект. Для решений с несколькими проектами публикация этих проектов один за другим может быть утомительной. Эта процедура показывает, как автоматизировать процесс с использованием макроса для публикации всех процессов в решении.
Создание макроса публикации
Откройте обозреватель макросов. Из меню Сервис выберите Макрос, затем Обозреватель макросов.
Создайте новый модуль макроса В обозревателе макросов выберите узел MyMacros. Из меню Сервис выберите Макрос, затем Создать макромодуль. Назовите модуль PublishAllProjects.
В обозревателе макросов раскройте узел MyMacros, а затем откройте модуль PublishAllProjects, дважды щелкнув его (или из меню Сервис выберите Макрос, после чего выберите Интегрированная среда разработки макросов).
В интегрированной среде разработки макросов добавьте в модуль следующий код, после операторов 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
Закройте интегрированную среду разработки макросов. Фокус возвратится в Visual Studio.
Публикация всех проектов в решении
Создайте проект приложения Windows Visual Basic. В меню Файл выберите команду Создать проект.
В диалоговом окне Создание проекта выберите Приложение Windows из узла Visual Basic. Назовите проект MultiProj.
Добавьте два проекта приложений Windows в решение MultiProj. Назовите их как Proj1 и Proj2.
Вначале опубликуйте в решении оба проекта. Макрос требует, чтобы были подписаны манифесты ClickOnce и была установлена зона безопасности для каждого из проектов. При публикации каждого проекта с использованием интегрированной среды разработки (IDE) перед использованием макроса процесс публикации подписывает манифесты ClickOnce и устанавливает зону безопасности, что необходимо для выполнения макроса.
В обозревателе решений выберите MultiProj. В меню Проект выберите пункт Свойства. В конструкторе проектов перейдите на вкладку Публикация. На странице Публикация укажите местоположение для публикации publish\, затем нажмите Опубликовать сейчас.
Повторите эти шаги для других проектов в решении.
Вновь опубликуйте MultiProj, вызвав макрос в окне команд Visual Studio. Чтобы просмотреть окно команд, в меню Вид выберите Другие окна, затем Окно команд или нажмите сочетание клавиш CTRL+ALT+A. В окне команд введите macros; автозаполнение предоставит список доступных макросов. Выберите следующий макрос и нажмите клавишу ВВОД.
Macros.MyMacros.PublishAllProjects.PublishAllProjectsInSolution
При успешном завершении процесса публикации для каждого проекта выводится сообщение "Публикация успешно завершена для MultiProj\MultiProj.vbproj". Для каждого окна сообщения нажмите кнопку "ОК".
Просмотрите подкаталоги публикации в каталоге каждого проекта. Должны быть видны манифесты, файл setup.exe и файлы веб-страницы публикации.
См. также
Задачи
Практическое руководство. Изменение и программное создание макросов
Практическое руководство. Публикация проекта, имеющего конкретный языковый стандарт