What is a satellite assembly, and how can we use it?
-
2Exact dupe as http://stackoverflow.com/questions/365569/what-is-a-satellite-assembly – Marcel Jun 05 '12 at 09:32
3 Answers
Satellite assemblies are small assemblies that contain only resources and are specific to a particular language (or, more accurately, culture). For instance, say I have an assembly called "MyAssembly.dll". If I had translations for US English and Chinese (PRC), the file structure would look like this:
MyAssembly.dll
en-US/
MyAssembly.resources.dll
zh-CN/
MyAssembly.resources.dll
Each of the .resources.dll
files would contain the data from any culture-specific resource files that would be in the project (they would take the form of FileName.culture.resx
, so if we're talking about the US English translation of Form1
's resources, it would be Form1.us-EN.resx
).
As for using these files, this is done automatically by the resource manager. In the generated code for a resources file (that gives you the property-based syntax for reading a resource's value) it uses the current UI culture, but you can override this by calling the ResourceManager.GetString(string name, CultureInfo culture)
overload.

- 182,639
- 35
- 285
- 343
A satellite assembly is a compiled library (DLL) that contains “localizable” resources specific to a given culture such as strings, bitmaps, etc.
You are likely to use satellite assemblies when creating a multilingual UI application. They are used to deploy applications in multiple cultures, with 1 satellite assembly per culture (default behavior)

- 2,042
- 23
- 25