Walkthrough: Download de Assemblies de satélite sob demanda com a API usando o Designer de implantação de ClickOnce

Aplicativos Windows Forms podem ser configurados para várias culturas através do uso de assemblies satélites. A assembly satélite é um assembly que contém recursos de aplicativo para uma cultura diferente de cultura do padrão do aplicativo.

Conforme discutido em Localização de aplicativos de ClickOnce, você pode incluir vários assemblies de satélite para várias culturas dentro do mesmo ClickOnce implantação. Por padrão, ClickOnce baixará todos os assemblies satélite na sua implantação para a máquina do cliente, embora provavelmente exigirá um único cliente apenas um assembly satélite.

Esta explicação passo a passo demonstra como marcar seus assemblies satélites como opcionais e baixar o assembly precisa de uma máquina cliente para suas configurações de cultura atual.

ObservaçãoObservação

Para fins de teste, os exemplos de código a seguir definem programaticamente a cultura ja-JP. Consulte "Próximas etapas" seção mais adiante neste tópico para obter informações sobre como ajustar esse código para um ambiente de produção.

Pré-requisitos

Este tópico pressupõe que você saiba como adicionar recursos localizados para seu aplicativo usingVisual Studio. Para obter instruções detalhadas, consulte Demonstra Passo a passo: Localizando Windows Forms.

Marcar assemblies de satélite como opcionais

  1. Crie o seu projeto. Isso gerará assemblies de satélite para todas as culturas que você estiver localizando a.

  2. Clique com o botão direito no seu nome de projeto no Solution Explorer e, em seguida, clique em Propriedades.

  3. Clique o Publicar e na guia Arquivos de aplicativo.

  4. Selecione o Mostrar todos os arquivos caixa de seleção para exibir os assemblies satélites. Por padrão, todos os assemblies de satélite serão incluídos na sua implantação e estarão visíveis nesta caixa de diálogo.

    Um assembly satélite terá um nome no formulário isoCode\ApplicationName.resources.dll, onde isoCode é um identificador de idioma no formato de RFC 1766.

  5. Clique em novo... no O grupo de Download a lista para cada identificador de idioma. Quando for solicitado um nome de grupo de download, insira o identificador de idioma. Por exemplo, para um assembly satélite japonês, você especificaria o nome do grupo de download ja-JP.

  6. Fechar o Arquivos de aplicativo caixa de diálogo.

Para fazer o download de assemblies de satélite sob demanda, em C#

  1. Abra o arquivo Program. cs. Se você não vir esse arquivo no Solution Explorer, selecione o seu projeto e sobre o projeto menu, clique em Mostrar todos os arquivos.

  2. Use o código a seguir para baixar o assembly satélite adequado e iniciar o seu aplicativo.

    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 fazer o download de assemblies de satélite sob demanda, em Visual Basic

  1. No Propriedades janela do aplicativo, clique no aplicativo guia.

  2. Na parte inferior da página de guia, clique em View Application Events.

  3. Adicione o seguintes imports para o início do arquivo ApplicationEvents. vb.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
  4. Adicione o seguinte código à classe MyApplication:

    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óximas etapas

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, como máquinas de cliente será o valor correto definidos por padrão. Quando seu aplicativo é executado em uma máquina do cliente em japonês, por exemplo, CurrentUICulture será ja-JP por padrão. Defini-la por meio de programação é uma boa maneira de testar seus assemblies satélites, antes de implantar seu aplicativo.

Consulte também

Tarefas

Walkthrough: Download de Assemblies de satélite sob demanda com a API de implantação de ClickOnce

Conceitos

Localização de aplicativos de ClickOnce