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çã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
Para abrir o Gerenciador de Macro, o Ferramentas , aponte para Macrose em seguida, clique em Macro Explorer.
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.
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).
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
Feche as Macros IDE. O foco retorna para Visual Studio.
Para publicar um projeto para um local específico
Para criar um projeto de aplicativo do Windows Visual Basic sobre o arquivo , aponte para novoe, em seguida, clique em projeto.
No Novo projeto caixa de diálogo, selecione Windows Application da Visual Basic nó. Nome do projeto PublishLocales.
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.
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.)
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
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.
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
Conceitos
Publishing ClickOnce Applications