Практическое руководство. Публикация проекта, имеющего конкретный языковый стандарт
Приложение обычно не содержит компонентов, имеющих разные языковые стандарты. В этом сценарии создается решение, имеющее несколько проектов, и публикуются отдельные проекты для каждого языкового стандарта. Эта процедура показывает, как использовать макрос для публикации первого проекта в решении, используя языковый стандарт "en". Если нужно протестировать эту процедуру с языковым стандартом, отличным от "en", убедитесь в том, что в макросе установлено значение localeString, соответствующее используемому языковому стандарту (например "ru" или "ru-RU").
Примечание
При использовании этого макроса местоположением для публикации должен быть допустимый URL-адрес или общая UNC-папка.Кроме того, на компьютере должна быть установлена служба IIS.Чтобы установить службу IIS, в меню Пуск выберите Панель управления.Дважды щелкните значок Установка и удаление программ.В окне Установка и удаление программ выберите Добавление и удаление компонентов Windows.В мастере компонентов Windows установите флажок Internet Information Services (IIS) в списке Компоненты.Нажмите кнопку Готово, чтобы завершить работу мастера.
Создание макроса публикации
Чтобы открыть обозреватель макросов, в меню Сервис выберите Макрос, затем выберите Обозреватель макросов.
Создание нового модуля макроса В обозревателе макросов выберите MyMacros. В меню Сервис выберите Макросы, а затем выберите Новый модуль макроса. Назовите модуль PublishSpecificCulture.
В обозревателе макросов раскройте узел MyMacros, а затем откройте модуль PublishAllProjects, дважды щелкнув его (или из меню Сервис выберите Макрос, после чего выберите Интегрированная среда разработки макросов).
В интегрированной среде разработки макросов добавьте в модуль следующий код, после операторов Import:
Module PublishSpecificCulture Sub PublishProjectFirstProjectWithEnLocale() ' Note: You should publish projects by using the IDE at least once ' before you use this macro. Items such as the certficate and the ' security zone must be set. Dim localeString As String = "en" ' Get first project. Dim proj As Project = DTE.Solution.Projects.Item(1) Dim publishProperties As Object = proj.Properties.Item("Publish").Value ' GenerateManifests and SignManifests must always be set to ' True for publishing to work. proj.Properties.Item("GenerateManifests").Value = True proj.Properties.Item("SignManifests").Value = True 'Set the publish language. 'This will set the deployment language and pick up all ' en resource dlls: Dim originalTargetCulture As String = _ publishProperties.Item("TargetCulture").Value publishProperties.Item("TargetCulture").Value = localeString 'Append 'en' to end of publish, install, and update URLs if needed: Dim originalPublishUrl As String = _ publishProperties.Item("PublishUrl").Value Dim originalInstallUrl As String = _ publishProperties.Item("InstallUrl").Value Dim originalUpdateUrl As String = _ publishProperties.Item("UpdateUrl").Value publishProperties.Item("PublishUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalPublishUrl)) If originalInstallUrl <> String.Empty Then publishProperties.Item("InstallUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalInstallUrl)) End If If originalUpdateUrl <> String.Empty Then publishProperties.Item("UpdateUrl").Value = _ AppendStringToUrl(localeString, New Uri(originalUpdateUrl)) End If proj.Save() Dim slnbld2 As SolutionBuild2 = _ CType(DTE.Solution.SolutionBuild, SolutionBuild2) slnbld2.Clean(True) slnbld2.BuildProject( _ proj.ConfigurationManager.ActiveConfiguration.ConfigurationName, _ proj.UniqueName, True) ' Only publish if build is 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 _ & vbCrLf & "." _ & " Publish Language was '" & localeString & "'.") Else MsgBox("Publish failed for " & proj.UniqueName) End If End If ' Return URLs and target culture to their previous state. publishProperties.Item("PublishUrl").Value = originalPublishUrl publishProperties.Item("InstallUrl").Value = originalInstallUrl publishProperties.Item("UpdateUrl").Value = originalUpdateUrl publishProperties.Item("TargetCulture").Value = originalTargetCulture proj.Save() End Sub Private Function AppendStringToUrl(ByVal str As String, _ ByVal baseUri As Uri) As String Dim returnValue As String = baseUri.OriginalString If baseUri.IsFile OrElse baseUri.IsUnc Then returnValue = IO.Path.Combine(baseUri.OriginalString, str) Else If Not baseUri.ToString.EndsWith("/") Then returnValue = baseUri.OriginalString & "/" & str Else returnValue = baseUri.OriginalString & str End If End If Return returnValue End Function End Module
Закройте интегрированную среду разработки макросов. Фокус возвратится в Visual Studio.
Публикация проекта для конкретного языкового стандарта
Чтобы создать проект приложения Visual Basic Windows, в меню Файл выберите Создать, а затем Проект.
В диалоговом окне Создание проекта выберите Приложение Windows из узла Visual Basic. Назовите проект PublishLocales.
Щелкните форму Form1. В окне Свойства в области Конструктор измените свойство язык с (По умолчанию) на Английский. Измените свойство Text формы на "Моя форма".
Обратите внимание, что локализованные DLL-библиотеки ресурсов не создаются до тех пор, пока они не потребуются Например, они создаются при изменении текста формы или одного из ее элементов управления после задания нового языкового стандарта.
Опубликуйте проект PublishLocales при помощи IDE Visual Studio.
В обозревателе решений выберите PublishLocales. В меню Проект выберите пункт Свойства. В конструкторе проектов, на странице Публикация задайте расположение для публикации https://localhost/PublishLocales, а затем щелкните Опубликовать сейчас.
Когда появится веб-страница публикации, закройте ее. (Для этого шага необходимо только опубликовать проект, устанавливать его не нужно).
Вновь опубликуйте PublishLocales, вызвав макрос в окне командной строки Visual Studio. Чтобы просмотреть окно командной строки, в меню Вид выберите Другие окна, а затем выберите Окно команд или нажмите сочетание клавиш CTRL+ALT+A. В окне командной строки введите macros; автозаполнение предоставит список доступных макросов. Выберите следующий макрос и нажмите клавишу ВВОД.
Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale
При успешном завершении процесса публикации он формирует сообщение "Публикация успешно завершена для PublishLocales\PublishLocales.vbproj. Языком публикации был "en"". В окне сообщения нажмите кнопку ОК. Когда появится веб-страница публикации, нажмите кнопку Установить.
Откройте папку C:\Inetpub\wwwroot\PublishLocales\en. Вы должны увидеть такие установленные файлы как манифесты, setup.exe и файл публикации веб-страницы, в дополнение к локализованной DLL-библиотеке ресурсов. (По умолчанию к ClickOnce добавляется расширение .deploy на модулях EXE и DLL; это расширение можно удалить после развертывания).
См. также
Задачи
Практическое руководство. Изменение и программное создание макросов
Практическое руководство. Публикация нескольких проектов в решении
Ссылки
Основные понятия
Публикация ClickOnce-приложений