Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Windows Forms-program kan konfigureras för flera kulturer med hjälp av satellitsammansättningar. En satellitsammansättning är en sammansättning som innehåller programresurser för en annan kultur än programmets standardkultur.
Som beskrivs i Localizing ClickOnce Applications (Lokalisera ClickOnce-program) kan du inkludera flera satellitsammansättningar för flera kulturer i samma ClickOnce-distribution. Som standard laddar ClickOnce ned alla satellitsammansättningar i distributionen till klientdatorn, även om en enda klient förmodligen bara kräver en satellitsammansättning.
Den här genomgången visar hur du markerar dina satellitsammansättningar som valfria och hämtar endast den sammansättning som en klientdator behöver för sina aktuella kulturinställningar.
Anmärkning
Klassen ApplicationDeployment och API:erna System.Deployment.Application i namnområdet stöds inte i .NET Core- och .NET 5- och senare versioner. I .NET 7 stöds en ny metod för att komma åt egenskaper för programdistribution. Mer information finns i Access ClickOnce distributionsegenskaper i .NET. .NET 7 stöder inte motsvarigheten till ApplicationDeployment-metoder.
Anmärkning
I testsyfte anger följande kodexempel programmatiskt kulturen till ja-JP. Mer information om hur du justerar koden för en produktionsmiljö finns i avsnittet Nästa steg senare i det här avsnittet.
Så här markerar du satellitsammansättningar som valfria
Skapa ditt projekt. Detta genererar satellitsammansättningar för alla kulturer som du lokaliserar till.
Högerklicka på projektnamnet i Solution Explorer och klicka på Egenskaper.
Klicka på fliken Publicera och klicka sedan på Programfiler.
Markera kryssrutan Visa alla filer för att visa satellitsammansättningar. Som standard inkluderas alla satellitsammansättningar i distributionen och visas i den här dialogrutan.
En satellitsammansättning har ett namn i formatet <isoCode>\ApplicationName.resources.dll, där <isoCode> är en språkidentifierare i RFC 1766-format.
Klicka på Nytt i listan Ladda ned grupp för varje språkidentifierare. När du uppmanas att ange ett namn på en nedladdningsgrupp anger du språkidentifieraren. För en japansk satellitsammansättning anger du till exempel namnet
ja-JPpå nedladdningsgruppen .Stäng dialogrutan Programfiler .
Ladda ned satellitsammansättningar på begäran i C#
Öppna filen Program.cs . Om du inte ser den här filen i Solution Explorer väljer du projektet och klickar på Visa alla filer på Projekt-menyn.
Använd följande kod för att ladda ned lämplig satellitsammansättning och starta programmet.
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. } } } } } }
Ladda ned satellitsammansättningar på begäran i Visual Basic
I fönstret Egenskaper för programmet klickar du på fliken Program .
Längst ned på fliken klickar du på Visa programhändelser.
Lägg till följande importer i början av ApplicationEvents.VB-filen .
Imports System.Deployment.Application Imports System.Globalization Imports System.ThreadingLägg till följande kod i
MyApplicationklassen.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
Nästa steg
I en produktionsmiljö måste du förmodligen ta bort raden i kodexemplen som anger CurrentUICulture ett visst värde, eftersom klientdatorerna har rätt värde inställt som standard. När programmet till exempel CurrentUICulture körs på en japansk klientdator blir ja-JP det som standard. Att ställa in den programmatiskt är ett bra sätt att testa dina satellitsammansättningar innan du distribuerar programmet.