Ressourcen in Desktop-AppsResources in Desktop Apps

Fast jede professionell erstellte App benötigt Ressourcen.Nearly every production-quality app has to use resources. Dabei handelt es sich um nicht ausführbare Daten, die logisch mit einer App bereitgestellt werden.A resource is any nonexecutable data that is logically deployed with an app. Eine Ressource kann in einer App als Fehlermeldung oder als Teil der Benutzeroberfläche angezeigt werden.A resource might be displayed in an app as error messages or as part of the user interface. Ressourcen können verschiedene Formen von Daten enthalten, z. B. Zeichenfolgen, Bilder und beibehaltene Objekte.Resources can contain data in a number of forms, including strings, images, and persisted objects. (Objekte, die beibehalten werden, müssen serialisierbar sein, um in eine Ressourcendatei geschrieben werden zu können.) Durch Speichern von Daten in einer Ressourcendatei können Sie die Daten ändern, ohne die gesamte App neu kompilieren zu müssen.(To write persisted objects to a resource file, the objects must be serializable.) Storing your data in a resource file enables you to change the data without recompiling your entire app. Außerdem können Sie dadurch die Daten an einem einzigen Ort speichern und müssen nicht auf hartcodierte Daten zurückgreifen, die an mehreren Orten gespeichert wird.It also enables you to store data in a single location, and eliminates the need to rely on hard-coded data that is stored in multiple locations.

.NET Framework stellt umfassende Unterstützung zum Erstellen und Lokalisieren von Ressourcen in Desktop-Apps zur Verfügung.The .NET Framework provides comprehensive support for the creation and localization of resources in desktop apps. Außerdem unterstützt .NET Framework ein einfaches Modell zum Verpacken und Bereitstellen dieser lokalisierten Ressourcen in Desktop-Apps.In addition, the .NET Framework supports a simple model for packaging and deploying these localized resources in desktop apps.

Weitere Informationen über Ressourcen in ASP.NET finden Sie unter Übersicht über Ressourcen der ASP.NET-Webseite im Internet Explorer Developer Center.For information about resources in ASP.NET, see ASP.NET Web Page Resources Overview in the Internet Explorer Developer Center.

Windows 8.x StoreWindows 8.x Store-Apps verwenden ein anderes Ressourcenmodell als Desktop-Apps und speichern ihre Ressourcen in einer einzelnen PRI-Datei (Paketressourcenindex). apps use a different resource model from desktop apps and store their resources in a single package resource index (PRI) file. Weitere Informationen zu Ressourcen in Windows 8.x StoreWindows 8.x Store-Apps finden Sie unter Erstellen und Abrufen von Ressourcen in Windows Store-Apps im Windows Developer Center.For information about resources in Windows 8.x StoreWindows 8.x Store apps, see Creating and retrieving resources in Windows Store apps in the Windows Dev Center.

Erstellen und Lokalisieren von RessourcenCreating and Localizing Resources

In einer nicht lokalisierten App können Sie Ressourcendateien als Repository für App-Daten verwenden. Dies gilt besonders für Zeichenfolgen, die andernfalls an mehreren Stellen im Quellcode hartcodiert wären.In a non-localized app, you can use resource files as a repository for app data, particularly for strings that might otherwise be hard-coded in multiple locations in source code. Im Allgemeinen werden Ressourcen als Textdateien (.txt) oder XML-Dateien (.resx) erstellt und dann mit Resgen.exe (Resource File Generator) in binäre .resources-Dateien kompiliert.Most commonly, you create resources as either text (.txt) or XML (.resx) files, and use Resgen.exe (Resource File Generator) to compile them into binary .resources files. Diese Dateien können dann durch einen Sprachcompiler in die ausführbare Datei der App eingebettet werden.These files can then be embedded in the app's executable file by a language compiler. Weitere Informationen zum Erstellen von Ressourcen finden Sie unter Erstellen von Ressourcendateien.For more information about creating resources, see Creating Resource Files.

Sie können die Ressourcen der App auch für bestimmte Kulturen lokalisieren.You can also localize your app's resources for specific cultures. Dadurch können Sie lokalisierte (übersetzte) Versionen der Apps erstellen.This enables you to build localized (translated) versions of your apps. Wenn Sie eine App entwickeln, die lokalisierte Ressourcen verwendet, legen Sie eine Kultur als neutrale bzw. Ausweichkultur fest, deren Ressourcen verwendet werden, wenn keine passenden Ressourcen verfügbar sind.When you develop an app that uses localized resources, you designate a culture that serves as the neutral or fallback culture whose resources are used if no suitable resources are available. In der Regel werden die Ressourcen der neutralen Kultur in der ausführbaren Datei der App gespeichert.Typically, the resources of the neutral culture are stored in the app's executable. Die verbleibenden Ressourcen für einzelne lokalisierte Kulturen werden in eigenständigen Satellitenassemblys gespeichert.The remaining resources for individual localized cultures are stored in standalone satellite assemblies. Weitere Informationen finden Sie unter Erstellen von Satellitenassemblys.For more information, see Creating Satellite Assemblies.

Verpacken und Bereitstellen von RessourcenPackaging and Deploying Resources

Lokalisierte App-Ressourcen werden in Satellitenassemblys bereitgestellt.You deploy localized app resources in satellite assemblies. Eine Satellitenassembly enthält die Ressourcen einer einzelnen Kultur. Sie enthält keinen App-Code.A satellite assembly contains the resources of a single culture; it does not contain any app code. Im Satellitenassembly-Bereitstellungsmodell erstellen Sie eine App mit einer Standardassembly (in der Regel die Hauptassembly) und einer Satellitenassembly für jede Kultur, die von der App unterstützt wird.In the satellite assembly deployment model, you create an app with one default assembly (which is typically the main assembly) and one satellite assembly for each culture that the app supports. Da die Satellitenassemblys kein Teil der Hauptassembly sind, können Sie die Ressourcen problemlos entsprechend einer bestimmten Kultur ersetzen oder aktualisieren, ohne die Hauptassembly der App ersetzen zu müssen.Because the satellite assemblies are not part of the main assembly, you can easily replace or update resources corresponding to a specific culture without replacing the app's main assembly.

Überlegen Sie genau, aus welchen Ressourcen die Standardressourcenassembly der App bestehen soll.Carefully determine which resources will make up your app's default resource assembly. Da diese ein Teil der Hauptassembly ist, müssen Sie nach jeder Änderung daran auch die Hauptassembly ersetzen.Because it is a part of the main assembly, any changes to it will require you to replace the main assembly. Wenn Sie keine Standardressource angeben, wird eine Ausnahme ausgelöst, wenn der Ressourcenfallback-Prozess versucht, sie zu finden.If you do not provide a default resource, an exception will be thrown when the resource fallback process attempts to find it. In einer gut entworfenen App sollte die Verwendung von Ressourcen nie Ausnahmen auslösen.In a well-designed app, using resources should never throw an exception.

Weitere Informationen finden Sie im Artikel Verpacken und Bereitstellen von Ressourcen.For more information, see the Packaging and Deploying Resources article.

Abrufen von RessourcenRetrieving Resources

Zur Laufzeit werden von einer App die passenden lokalisierten Ressourcen auf Threadbasis entsprechend der Kultur geladen, die von der CultureInfo.CurrentUICulture-Eigenschaft angegeben wird.At run time, an app loads the appropriate localized resources on a per-thread basis, based on the culture specified by the CultureInfo.CurrentUICulture property. Dieser Eigenschaftswert wird wie folgt abgeleitet:This property value is derived as follows:

  • Durch direktes Zuweisen eines CultureInfo-Objekts, das die lokalisierte Kultur darstellt, zur Thread.CurrentUICulture-Eigenschaft.By directly assigning a CultureInfo object that represents the localized culture to the Thread.CurrentUICulture property.

  • Wenn keine Kultur explizit zugeordnet wurde, durch Abrufen der Benutzeroberflächenkultur des Standardthreads von der CultureInfo.DefaultThreadCurrentUICulture-Eigenschaft.If a culture is not explicitly assigned, by retrieving the default thread UI culture from the CultureInfo.DefaultThreadCurrentUICulture property.

  • Wenn keine Benutzeroberflächenkultur des Standardthreads explizit zugeordnet wurde, durch Abrufen der Kultur für den aktuellen Benutzer auf dem lokalen Computer durch Aufrufen der GetUserDefaultUILanguage-Funktion von Windows.If a default thread UI culture is not explicitly assigned, by retrieving the culture for the current user on the local computer by calling the Windows GetUserDefaultUILanguage function.

Weitere Informationen darüber, wie die aktuelle Benutzeroberflächenkultur festgelegt wird, finden Sie auf den Referenzseiten CultureInfo und CultureInfo.CurrentUICulture.For more information about how the current UI culture is set, see the CultureInfo and CultureInfo.CurrentUICulture reference pages.

Sie können Ressourcen dann für die aktuelle Benutzeroberflächenkultur oder für eine bestimmte Kultur abrufen, indem Sie die System.Resources.ResourceManager-Klasse verwenden.You can then retrieve resources for the current UI culture or for a specific culture by using the System.Resources.ResourceManager class. Die ResourceManager-Klasse wird zwar am häufigsten zum Abrufen von Ressourcen in Desktop-Apps verwendet, der System.Resources-Namespace enthält jedoch weitere Typen, die Sie zum Abrufen von Ressourcen verwenden können.Although the ResourceManager class is most commonly used for retrieving resources in desktop apps, the System.Resources namespace contains additional types that you can use to retrieve resources. Dazu gehören:These include:

  • Die ResourceReader-Klasse, mit der Sie Ressourcen auflisten können, die in eine Assembly eingebettet oder in einer eigenständigen binären ".resources"-Datei gespeichert sind.The ResourceReader class, which enables you to enumerate resources embedded in an assembly or stored in a standalone binary .resources file. Dies ist nützlich, wenn Sie die genauen Namen der Ressourcen nicht kennen, die zur Laufzeit verfügbar sind.It is useful when you don't know the precise names of the resources that are available at run time.

  • Die ResXResourceReader-Klasse, mit der Sie Ressourcen aus einer XML-Datei (.resx) abrufen können.The ResXResourceReader class, which enables you to retrieve resources from an XML (.resx) file.

  • Die ResourceSet-Klasse, mit der Sie Ressourcen einer bestimmten Kultur abrufen können, ohne Fallbackregeln zu beachten.The ResourceSet class, which enables you to retrieve the resources of a specific culture without observing fallback rules. Die Ressourcen können in einer Assembly oder einer eigenständigen binären ".resources"-Datei gespeichert werden.The resources can be stored in an assembly or a standalone binary .resources file. Sie können auch eine IResourceReader-Implementierung entwickeln, die Ihnen ermöglicht, mit der ResourceSet-Klasse Ressourcen aus einer anderen Quelle abzurufen.You can also develop an IResourceReader implementation that enables you to use the ResourceSet class to retrieve resources from some other source.

  • Die ResXResourceSet-Klasse, mit der Sie alle Elemente in einer XML-Ressourcendatei in den Speicher abrufen können.The ResXResourceSet class, which enables you to retrieve all the items in an XML resource file into memory.

Siehe auchSee Also

CultureInfo
CultureInfo.CurrentUICulture
Grundlagen der AnwendungApplication Essentials
Erstellen von RessourcendateienCreating Resource Files
Verpacken und Bereitstellen von RessourcenPackaging and Deploying Resources
Erstellen von SatellitenassemblysCreating Satellite Assemblies
Abrufen von RessourcenRetrieving Resources