Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Windows Forms-Anwendungen können mithilfe von Satellitenassemblys für mehrere Kulturen konfiguriert werden. Eine Satellitenassembly ist eine Assembly, die Anwendungsressourcen für eine andere Kultur als die Standardkultur der Anwendung enthält.
Wie in Localize ClickOnce-Anwendungen erläutert, können Sie mehrere Satellitenassemblys für mehrere Kulturen innerhalb derselben ClickOnce-Bereitstellung einschließen. Standardmäßig lädt ClickOnce alle Satellitenassemblys in Ihrer Bereitstellung auf den Clientcomputer herunter, obwohl ein einzelner Client wahrscheinlich nur eine Satellitenassembly erfordert.
In dieser Anleitung wird gezeigt, wie Sie Ihre Satellitenassemblys als optional kennzeichnen und nur die Assembly herunterladen, die ein Client-Rechner für die aktuellen Kultureinstellungen benötigt. Im folgenden Verfahren werden die tools verwendet, die im Windows Software Development Kit (SDK) verfügbar sind. Sie können diese Aufgabe auch in Visual Studio ausführen. Siehe auch Exemplarische Vorgehensweise: Herunterladen von Satellitenassemblys bei Bedarf mit der ClickOnce-Bereitstellungs-API mithilfe des Designers oder Exemplarische Vorgehensweise: Herunterladen von Satellitenassemblys bei Bedarf mit der ClickOnce-Bereitstellungs-API mithilfe des Designers.
Hinweis
Die ApplicationDeployment Klasse und APIs im System.Deployment.Application Namespace werden in .NET Core und .NET 5 und höher nicht unterstützt. In .NET 7 wird eine neue Methode für den Zugriff auf Anwendungsbereitstellungseigenschaften unterstützt. Weitere Informationen finden Sie unter Access ClickOnce-Bereitstellungseigenschaften in .NET. .NET 7 unterstützt nicht das Äquivalent von ApplicationDeployment-Methoden.
Hinweis
Für Testzwecke setzt das folgende Codebeispiel die Kultur programmgesteuert auf ja-JP. Im Abschnitt "Nächste Schritte" weiter unten in diesem Thema finden Sie Informationen zum Anpassen dieses Codes für eine Produktionsumgebung.
Voraussetzungen
In diesem Thema wird davon ausgegangen, dass Sie wissen, wie Sie Ihrer Anwendung mithilfe von Visual Studio lokalisierte Ressourcen hinzufügen. Ausführliche Anweisungen finden Sie unter Exemplarische Vorgehensweise: Lokalisieren von Windows-Formularen.
So laden Sie Satellitenassemblys bei Bedarf herunter
Fügen Sie Ihrer Anwendung den folgenden Code hinzu, um das Herunterladen von Satellitenassemblys bei Bedarf zu ermöglichen.
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. } } } } } }Generieren Sie Satellitenassemblys für Ihre Anwendung mithilfe von Resgen.exe (Ressourcendateigenerator) oder Visual Studio.
Generieren Sie ein Anwendungsmanifest, oder öffnen Sie Ihr vorhandenes Anwendungsmanifest, indem Sie MageUI.exeverwenden. Weitere Informationen zu diesem Tool finden Sie unterMageUI.exe (Manifestgenerierung und Bearbeitungstool, grafischer Client).
Klicken Sie auf die Registerkarte "Dateien ".
Klicken Sie auf die Schaltfläche mit den Auslassungspunkten (...), und wählen Sie das Verzeichnis aus, das alle Assemblys und Dateien Ihrer Anwendung enthält, einschließlich der Satellitenassemblys, die Sie mit Resgen.exegeneriert haben. (Eine Satellitenassembly hat einen Namen im Format <isoCode>\ApplicationName.resources.dll, wobei <isoCode> ein Sprachbezeichner im RFC 1766-Format ist.)
Klicken Sie auf "Auffüllen ", um die Dateien zu Ihrer Bereitstellung hinzuzufügen.
Aktivieren Sie das Kontrollkästchen "Optional " für jede Satellitenassembly.
Legen Sie das Gruppenfeld für jede Satellitenassembly auf den ISO-Sprachbezeichner fest. Für eine japanische Satellitenmontage würden Sie z. B. einen Downloadgruppennamen von
ja-JPangeben. Dadurch wird der Code, den Sie in Schritt 1 hinzugefügt haben, aktiviert, um je nach Einstellung der CurrentUICulture-Eigenschaft des Benutzers die entsprechende Satellitenassembly herunterzuladen.
Nächste Schritte
In einer Produktionsumgebung müssen Sie wahrscheinlich die Zeile im Codebeispiel entfernen, die CurrentUICulture auf einen bestimmten Wert festlegt, da der richtige Wert auf Clientcomputern standardmäßig vorgesehen ist. Wenn Ihre Anwendung beispielsweise auf einem japanischen Clientcomputer ausgeführt wird, ist CurrentUICulture standardmäßig ja-JP. Das programmgesteuerte Festlegen dieses Werts ist eine gute Möglichkeit, Ihre Satellitenassemblys zu testen, bevor Sie Ihre Anwendung bereitstellen.