Condividi tramite


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

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 descritto come contrassegnare gli assembly satellite come facoltativi e scaricare in un computer client solo l'assembly richiesto in base alle impostazioni cultura correnti. Nella procedura seguente vengono utilizzati gli strumenti disponibili in Windows Software Development Kit (SDK). Questa attività può essere eseguita anche in Visual Studio. Per ulteriori informazioni, vedere Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione e Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione e Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione e Procedura dettagliata: download di assembly satellite su richiesta con l'API della distribuzione ClickOnce tramite la finestra di progettazione.

Nota

Ai fini dell'esecuzione del test, nell'esempio di codice riportato di seguito viene specificato ja-JP a livello di codice per le impostazioni cultura. Per informazioni su come adattare questo codice a un ambiente di produzione, vedere la sezione "Passaggi successivi" più avanti in 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 scaricare assembly satellite su richiesta

  1. Aggiungere il codice seguente all'applicazione per attivare il download su richiesta di assembly satellite.

    Imports System.Deployment.Application
    Imports System.Globalization
    Imports System.Threading
    
    Public Class Form1
        Shared Sub Main(ByVal args As String())
            Application.EnableVisualStyles()
    
            Thread.CurrentThread.CurrentUICulture = New CultureInfo("ja-JP")
            GetSatelliteAssemblies(Thread.CurrentThread.CurrentUICulture.ToString())
    
            Application.Run(New Form1())
        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 error to the user, as there may not be a satellite
                        ' assembly if the user's culture and the application's default culture match.
    
                    End Try
                End If
            End If
        End Sub
    End Class
    
    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 error to the user, as there may not be a satellite
                            // assembly if the user's culture and the application's default culture match.
                        }
                    }
                }
            }
    
        }
    }
    
  2. Generare assembly satellite per l'applicazione utilizzando Resgen.exe (generatore di file di risorse) o Visual Studio.

  3. Generare un manifesto dell'applicazione o aprire il manifesto dell'applicazione esistente utilizzando MageUI.exe. Per ulteriori informazioni su questo strumento, vedere MageUI.exe (Strumento per la generazione e la modifica di manifesti, client grafico).

  4. Fare clic sulla scheda File.

  5. Fare clic sul pulsante con i puntini di sospensione (...) e selezionare la directory contenente tutti gli assembly e i file dell'applicazione, inclusi gli assembly satellite generati utilizzando Resgen.exe. Il nome degli assembly satellite sarà nel formato: CodiceIso\NomeApplicazione.resources.dll, dove CodiceIso è un'identificatore della lingua in formato RFC 1766.

  6. Fare clic su Popola per aggiungere i file alla distribuzione.

  7. Selezionare la casella di controllo Facoltativo per ogni assembly satellite.

  8. Impostare il campo del gruppo relativo a ogni assembly satellite sul relativo identificatore della lingua ISO. Per un assembly satellite giapponese ad esempio si specificherà un nome di gruppo di download ja-JP. In questo modo verrà attivato il codice aggiunto al passaggio 1 per scaricare l'assembly satellite appropriato, a seconda dell'impostazione della proprietà CurrentUICulture dell'utente.

Passaggi successivi

In un ambiente di produzione sarà necessario probabilmente rimuovere la riga nell'esempio di codice che imposta la proprietà CurrentUICulture su un valore specifico, poiché nei computer client il valore corretto sarà già definito per impostazione predefinita. Se l'applicazione viene eseguita ad esempio in un computer client giapponese, la proprietà CurrentUICulture sarà impostata su ja-JP per impostazione predefinita. L'impostazione di questo valore a livello di codice consente di verificare gli assembly satellite prima della distribuzione dell'applicazione.

Vedere anche

Concetti

Localizzazione delle applicazioni ClickOnce