Partilhar via


How to: Publicar um projeto de um local específico

Não é incomum para um aplicativo que contém componentes que tenham diferentes localidades. Nesse cenário, criar uma solução de vários projetos e, em seguida, publicar projetos separados para cada localidade. Este procedimento mostra como usar uma macro para publicar o primeiro projeto em uma solução usando a en localidade. Se você quiser tentar esse procedimento com uma localidade diferente de 'en', certifique-se de definir localeString na macro para coincidir com a localidade que você está usando (por exemplo, 'de' ou '17T23').

ObservaçãoObservação

Quando você usa essa macro, o local de publicação deve ser um compartilhamento de convenção Universal de nomenclatura (UNC) ou de URL válido. Além disso, Internet Information Services (IIS) deve ser instalado em seu computador. Para instalar o IIS, o Iniciar menu, clique em O painel de controle. Clique duas vezes em Adicionar ou remover programas. Em Adicionar ou remover programas, clique em Adicionar ou remover componentes do Windows. No Assistente de componentes do Windows, selecione o Internet Information Services (iis) caixa de seleção de componentes lista. Em seguida, clique em Concluir para fechar o assistente.

Para criar a macro de publicação

  1. Para abrir o Gerenciador de Macro, o Ferramentas , aponte para Macrose em seguida, clique em Macro Explorer.

  2. Crie um novo módulo de macro. No Gerenciador de Macro, selecione MyMacros. Sobre o Ferramentas , aponte para Macrose em seguida, clique em Novo módulo de Macro. Nome do módulo PublishSpecificCulture.

  3. No Macro Explorer, expanda o MyMacros nó e abra o PublishAllProjects módulo clicando duas vezes nele (ou, o Ferramentas , aponte para Macrose, em seguida, clique em IDE de Macros).

  4. No IDE de Macros, adicione o seguinte código no módulo, após a Import instruções:

    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. Feche as Macros IDE. O foco retorna para Visual Studio.

Para publicar um projeto para um local específico

  1. Para criar um projeto de aplicativo do Windows Visual Basic sobre o arquivo , aponte para novoe, em seguida, clique em projeto.

  2. No Novo projeto caixa de diálogo, selecione Windows Application da Visual Basic nó. Nome do projeto PublishLocales.

  3. Clique em Form1. No Propriedades janela, em Design, alterar o idioma a propriedade de (padrão) para inglês. Alterar o texto a propriedade do formulário MyForm.

    Observe que o recurso localizado DLLs não são criadas até que eles sejam necessários. Por exemplo, eles são criados quando você altera o texto do formulário ou um de seus controles após você ter especificado a localidade do nova.

  4. Publica PublishLocales usando o IDE de Visual Studio.

    Em Solution Explorer, selecione PublishLocales. Sobre o projeto menu, selecione Propriedades. No Project Designer, sobre o Publicar de página, especifique um local de publicação do https://localhost/PublishLocales e, em seguida, clique em Publicar agora.

    Quando aparecer a página Publicar na Web, feche-o. (Para esta etapa, você só precisa publicar o projeto; não é necessário instalá-lo.)

  5. Publica novamente o PublishLocales invocando a macro na janela do Prompt de comando Visual Studio. Para exibir a janela do Prompt de comando, o Exibir , aponte para Other Windows e, em seguida, clique em A janela de comando, ou pressione CTRL + ALT + A. Na janela do Prompt de comando, digite macros; auto-completar fornecerá uma lista de macros disponíveis. Selecione a macro a seguir e pressione ENTER:

    Macros.MyMacros.PublishSpecificCulture.PublishProjectFirstProjectWithEnLocale

  6. Quando o processo de publicação for bem-sucedido, ele gerará uma mensagem que diz "Publish succeeded para PublishLocales\PublishLocales.vbproj. Publicar linguagem era 'en'. " Clique em OK na caixa de mensagem. Quando aparecer a página Publicar na Web, clique em instalar.

  7. Procure no C:\Inetpub\wwwroot\PublishLocales\en. Você deve ver os arquivos instalados, como os manifestos, Setup. exe e o arquivo de página da Web de publicar, além de para a DLL de recurso localizado. (Por padrão ClickOnce acrescenta uma extensão. Deploy EXEs e DLLs; Você pode remover esta extensão após a implantação.)

Consulte também

Tarefas

Como: Editar e programaticamente criar Macros

How to: Publicar vários projetos em uma solução

Referência

Janela do Explorer de macro

Conceitos

Publishing ClickOnce Applications

Outros recursos

Ambiente de desenvolvimento de macros