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


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

Приложение обычно не содержит компонентов, имеющих разные языковые стандарты. В этом сценарии создается решение, имеющее несколько проектов, и публикуются отдельные проекты для каждого языкового стандарта. Эта процедура показывает, как использовать макрос для публикации первого проекта в решении, используя языковый стандарт "en". Если нужно протестировать эту процедуру с языковым стандартом, отличным от "en", убедитесь в том, что в макросе установлено значение localeString, соответствующее используемому языковому стандарту (например "ru" или "ru-RU").

Примечание

При использовании этого макроса местоположением для публикации должен быть допустимый URL-адрес или общая UNC-папка.Кроме того, на компьютере должна быть установлена служба IIS.Чтобы установить службу IIS, в меню Пуск выберите Панель управления.Дважды щелкните значок Установка и удаление программ.В окне Установка и удаление программ выберите Добавление и удаление компонентов Windowsмастере компонентов Windows установите флажок Internet Information Services (IIS) в списке Компоненты.Нажмите кнопку Готово, чтобы завершить работу мастера.

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

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

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

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

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

Публикация проекта для конкретного языкового стандарта

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

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

  3. Щелкните форму Form1. В окне Свойства в области Конструктор измените свойство язык с (По умолчанию) на Английский. Измените свойство Text формы на "Моя форма".

    Обратите внимание, что локализованные DLL-библиотеки ресурсов не создаются до тех пор, пока они не потребуются Например, они создаются при изменении текста формы или одного из ее элементов управления после задания нового языкового стандарта.

  4. Опубликуйте проект PublishLocales при помощи IDE Visual Studio.

    В обозревателе решений выберите PublishLocales. В меню Проект выберите пункт Свойства. В конструкторе проектов, на странице Публикация задайте расположение для публикации https://localhost/PublishLocales, а затем щелкните Опубликовать сейчас.

    Когда появится веб-страница публикации, закройте ее. (Для этого шага необходимо только опубликовать проект, устанавливать его не нужно).

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

    Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale

  6. При успешном завершении процесса публикации он формирует сообщение "Публикация успешно завершена для PublishLocales\PublishLocales.vbproj. Языком публикации был "en"". В окне сообщения нажмите кнопку ОК. Когда появится веб-страница публикации, нажмите кнопку Установить.

  7. Откройте папку C:\Inetpub\wwwroot\PublishLocales\en. Вы должны увидеть такие установленные файлы как манифесты, setup.exe и файл публикации веб-страницы, в дополнение к локализованной DLL-библиотеке ресурсов. (По умолчанию к ClickOnce добавляется расширение .deploy на модулях EXE и DLL; это расширение можно удалить после развертывания).

См. также

Задачи

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

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

Ссылки

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

Основные понятия

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

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

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