An assembly is essentially a portable executable or library file
containing partially compiled code for use in deployment, security and
versioning in Microsoft .NET's managed environment. The assembly is compiled
into the machine language instructions by the CLR.
Satellite Assemblies are special assemblies that only
contain resources and are associated with the main assembly. Satellite
assemblies are used to store compiled localized application resources. They
contain only resource data and no other code. Satellite assemblies are used to
load the data dynamically depending upon the culture of the application. They
can be created using the AL utility tool provided with Microsoft .NET SDK. With
satellite assemblies, resources are embedded in a binary format within a DLL.
This makes the resources not very visible to the user and ensures faster
access. These assemblies can be deployed even after deployment of the
application.
Refer to the earlier sections where we had already created a
resource file that was intended for UK English culture. We had then compiled the
same to create a compiled resource file using the resgen utility. Now we can
use the AL utility shipped with the Microsoft .NET SDK to create a satellite
assembly from a compiled resource file as shown below.
Listing 10
al /t:lib /culture:en-GB /embed: Internationalization.en-GB.resources
/out: Internationalization.resources.dll
The output file Internationalization.en-GB.resources is a satellite
assembly file that is created for the en-GB locale from the compiled resource
file. The .NET Framework Developer's Guide, MSDN, states, "Ideally, you
should package the resources for the default or neutral assembly with the main
assembly and create a separate satellite assembly for each language that your
application supports."