Linguagem
Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os aplicativos Windows Forms podem ser configurados para várias culturas por meio do uso de assemblies satélite. Um assembly satélite é um assembly que contém recursos de aplicativo para uma cultura diferente da cultura padrão do aplicativo.
Conforme discutido em Localização de Aplicações ClickOnce, pode incluir múltiplos assemblies satélite para diversas culturas na mesma implantação ClickOnce. Por padrão, ClickOnce baixará todos os assemblies satélite na sua implantação para a máquina cliente, embora um único cliente provavelmente exija apenas um único assembly satélite.
Este passo a passo demonstra como marcar seus assemblies satélite como opcionais e baixar apenas o assembly que uma máquina cliente precisa para suas configurações de cultura atuais.
Observação
A classe <xref:System.Deployment.Application.ApplicationDeployment> e as APIs no namespace <xref:System.Deployment.Application> não são suportadas no .NET Core e no .NET 5 e versões posteriores. No .NET 7, um novo método de acessar propriedades de implantação de aplicativo é suportado. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não suporta o equivalente aos métodos ApplicationDeployment.
Observação
Para fins de teste, os exemplos de código a seguir definem programaticamente a cultura como ja-JP. Consulte a seção "Próximas etapas" mais adiante neste tópico para obter informações sobre como ajustar esse código para um ambiente de produção.
Para marcar montagens satélite como opcionais
Compile o seu projeto. Isso gerará montagens de satélite para todas as culturas para as quais você está localizando.
Clique com o botão direito do mouse no nome do projeto no Gerenciador de Soluções e clique em Propriedades.
Clique no separador Publicar e, em seguida, clique em Ficheiros de Aplicação.
Marque a caixa de seleção Mostrar todos os arquivos para exibir assemblies satélite. Por padrão, todos os assemblies satélite serão incluídos na sua implantação e ficarão visíveis nesta caixa de diálogo.
Um conjunto satélite terá um nome na forma <isoCode>\ApplicationName.resources.dll, onde <isoCode> é um identificador de idioma no formato RFC 1766.
Clique em Novo na lista Download Group para cada identificador de idioma. Quando for solicitado um nome de grupo de download, insira o identificador de idioma. Por exemplo, para um satélite assembly japonês, deve-se especificar o nome
ja-JPdo grupo de download.Feche a caixa de diálogo Arquivos do aplicativo .
Para baixar montagens satélite sob demanda em C#
Abra o arquivo Program.cs . Se você não vir esse arquivo no Gerenciador de Soluções, selecione seu projeto e, no menu Projeto , clique em Mostrar Todos os Arquivos.
Use o código abaixo para descarregar o assembly satélite apropriado e iniciar a sua aplicação.
using System; using System.Collections.Generic; using System.Windows.Forms; using System.Threading; using System.Globalization; using System.Deployment.Application; using System.Reflection; namespace ClickOnce.SatelliteAssemblies { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja-JP"); // Call this before initializing the main form, which will cause the resource manager // to look for the appropriate satellite assembly. GetSatelliteAssemblies(Thread.CurrentThread.CurrentCulture.ToString()); Application.Run(new Form1()); } static void GetSatelliteAssemblies(string groupName) { if (ApplicationDeployment.IsNetworkDeployed) { ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; if (deploy.IsFirstRun) { try { deploy.DownloadFileGroup(groupName); } catch (DeploymentException de) { // Log error. Do not report this error to the user, because a satellite // assembly may not exist if the user's culture and the application's // default culture match. } } } } } }
Para baixar assemblies satélite sob demanda no Visual Basic
Na janela Propriedades do aplicativo, clique na guia Aplicativo .
Na parte inferior da página da guia, clique em Exibir eventos do aplicativo.
Adicione as seguintes importações ao início do arquivo ApplicationEvents.VB .
Imports System.Deployment.Application Imports System.Globalization Imports System.ThreadingAdicione o seguinte código à
MyApplicationclasse.Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP") GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString()) End Sub Private Shared Sub GetSatelliteAssemblies(ByVal groupName As String) If (ApplicationDeployment.IsNetworkDeployed) Then Dim deploy As ApplicationDeployment = ApplicationDeployment.CurrentDeployment If (deploy.IsFirstRun) Then Try deploy.DownloadFileGroup(groupName) Catch de As DeploymentException ' Log error. Do not report this error to the user, because a satellite ' assembly may not exist if the user's culture and the application's ' default culture match. End Try End If End If End Sub
Próximos passos
Em um ambiente de produção, você provavelmente precisará remover a linha nos exemplos de código que define CurrentUICulture para um valor específico, porque as máquinas cliente terão o valor correto definido por padrão. Quando seu aplicativo é executado em uma máquina cliente japonesa, por exemplo, CurrentUICulture será ja-JP por padrão. Configurá-lo programaticamente é uma boa forma de testar os seus assemblies satélite antes de implementar a sua aplicação.