Condividi tramite


Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione

Le applicazioni Windows Form possono essere configurate per più impostazioni cultura tramite l'utilizzo di assembly satellite. Un assembly satellite è un assembly in cui sono contenute risorse dell'applicazione per impostazioni cultura diverse da quelle predefinite dell'applicazione.

Come descritto in Localizzazione delle applicazioni ClickOnce, è possibile includere più assembly satellite per più impostazioni cultura all'interno della stessa distribuzione ClickOnce. Per impostazione predefinita, ClickOnce scaricherà tutti gli assembly satellite nella distribuzione nel computer client, anche se probabilmente un singolo client richiederà un solo assembly satellite.

In questa procedura dettagliata viene illustrato come contrassegnare gli assembly satellite come facolativi e scaricare solo l'assembly necessario per le impostazioni cultura in uso nel computer client.

Nota

Ai fini dell'esecuzione del test, nei seguenti esempi di codice viene specificato ja-JP a livello di codice per le impostazioni cultura. Per informazioni su come modificare il codice per un ambiente di produzione, vedere la sezione relativa ai passaggi successivi di questo argomento.

Prerequisiti

Le informazioni illustrate in questo argomento partono dal presupposto che si conosca come aggiungere risorse localizzate nell'applicazione utilizzando Visual Studio. Per istruzioni dettagliate, vedere Procedura dettagliata: localizzazione di Windows Form.

Per contrassegnare gli assembly satellite come facoltativi

  1. Compilazione del progetto. In questo modo verranno generati gli assembly satellite per tutte le impostazioni cultura in cui si sta eseguendo la localizzazione.

  2. Fare clic con il pulsante destro del mouse sul nome del progetto in Esplora soluzioni, quindi scegliere Proprietà.

  3. Fare clic sulla scheda Pubblica, quindi su File applicazione.

  4. Selezionare la casella di controllo Mostra tutti i file per visualizzare gli assembly satellite. Per impostazione predefinita, tutti gli assembly satellite verranno inclusi nella distribuzione e saranno visibili in questa finestra di dialogo.

    I nomi degli assembly satellite sono strutturati come segue: CodiceIso\NomeApplicazione.resources.dll, dove CodiceIso è un'identificatore del linguaggio in formato RFC 1766.

  5. Scegliere Nuovo... nell'elenco Gruppo di download per ogni identificatore del linguaggio. Quando viene richiesto di specificare un nome per il gruppo di download, immettere l'identificatore del linguaggio. Per un assembly satellite giapponese, ad esempio, specificare ja-JP.

  6. Chiudere la finestra di dialogo File applicazione.

Per scaricare assembly satellite su richiesta in C#

  1. Aprire il file Program.cs. Se questo file non è visualizzato in Esplora soluzioni, selezionare il progetto e scegliere Mostra tutti i file dal menu Progetto.

  2. Utilizzare il seguente codice per scaricare l'assembly satellite appropriato e avviare l'applicazione.

    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.
                        }
                    }
                }
            }
    
        }
    }
    

Per scaricare assembly satellite su richiesta in Visual Basic

  1. Fare clic sulla scheda Applicazione nella finestra Proprietà dell'applicazione.

  2. Nella parte inferiore della pagina della scheda, scegliere Visualizza eventi di applicazioni.

  3. Nella parte iniziale del file ApplicationEvents.VB, aggiungere i seguenti riferimenti importati.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
  4. Aggiungere il seguente codice alla 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
    

Passaggi successivi

In un ambiente di produzione sarà probabilmente necessario rimuovere la riga degli esempi di codice utilizzata per impostare la proprietà CurrentUICulture su un valore specifico, poiché il valore predefinito per i computer client è quello corretto. Quando l'applicazione è in esecuzione su un computer client giapponese, ad esempio, la proprietà predefinita CurrentUICulture sarà ja-JP. L'impostazione di tale proprietà a livello di codice è un buon metodo per procedere alla verifica degli assembly satellite prima di distribuire l'applicazione.

Vedere anche

Attività

Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce

Concetti

Localizzazione delle applicazioni ClickOnce