Click here to Skip to main content
13,147,050 members (68,046 online)
Click here to Skip to main content
Add your own
alternative version


38 bookmarked
Posted 14 Apr 2002

Using Resource-only Assemblies with C#

, 17 Apr 2002
Rate this:
Please Sign up or sign in to vote.
This note describes how to use resource-only assemblies with C# in the context of a multi-assembly project.


This article describes a technique that can be used in order to use resource-only assemblies within a multi-assembly project. I'm assuming that the reader is familiar with basics of assemblies and resource management under .NET. A good introduction in this topic can be found in "Resources and Localization Using the .NET Framework SDK", .NET framework tutorial.

The tutorial describes the technique of using resource files that are embedded within the application (or assembly):

using System.Resources;
ResourceManager rm = new 
  ResourceManager("MyNamespace.MyStrings", this.GetType().Assembly); 
string someString = rm.GetString("SomeString");

In the above example we're creating an instance of ResourceManager class. This instance will allow access to the "Strings" resource file. The second parameter specifies the assembly that embeds the resource. In this case we're specifying the assembly that contains this class. As the second line illustrates, once the resource manager is created, it can be used to get strings or objects from the resource.

So what if the resource you're trying to use is defined in some other assembly? This case is frequent in lager projects, where the code base is separated in multiple modules. Many projects may benefit from locating its resources in separate resource-only assemblies. The sample code in this article includes two projects: a simple console application and a resource-only library. The code demonstrates how the console application accesses strings stored in the resource-only library.

In order to create ResourceManager that corresponds to the resource in the different assembly, we need to specify the reference to the resource assembly as the second parameter in the constructor. Unfortunately Assembly class cannot return the assembly reference based on the resource name. To work around this problem, we first need to create a dummy ResLibraryClass class within resource assembly ResLibrary. Now we can use the dummy class in order to obtain the reference to the resource assembly by using typeof(ResLibraryClass) operator:

using System.Resources;
ResourceManager rm = new ResourceManager("ResouceSamlpe.Strings",
string someString = rm.GetString("string1");

Here we're using static GetAssembly method in order to obtain the reference to the assembly that embeds the resource. Also, note that you must supply the name of the resource file with its namespace, even if both the calling code and the resource file share the same namespace.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Alexis Smirnov
Web Developer
Canada Canada

You may also be interested in...


Comments and Discussions

QuestionCrystal Reports & resource manager Pin
ib0004221-Jun-07 0:17
memberib0004221-Jun-07 0:17 
GeneralVery helpful article. And a hint for vs 2005 users Pin
Lu Yixiang16-May-07 17:17
memberLu Yixiang16-May-07 17:17 
GeneralGood one dude Pin
ITstud29-Mar-07 20:27
memberITstud29-Mar-07 20:27 
QuestionHow to avoid hard coded strings Pin
Chakravarthy Sayani5-Mar-07 4:51
memberChakravarthy Sayani5-Mar-07 4:51 
AnswerRe: How to avoid hard coded strings Pin
Leblanc Meneses7-Mar-07 20:40
memberLeblanc Meneses7-Mar-07 20:40 
AnswerRe: How to avoid hard coded strings Pin
cisjokey11-Dec-08 22:54
membercisjokey11-Dec-08 22:54 
QuestionAvoiding hardcoding Pin
Member #23452545-Mar-07 4:50
memberMember #23452545-Mar-07 4:50 
QuestionIs this not a better way? Pin
NPow6-Feb-06 10:22
memberNPow6-Feb-06 10:22 
General.resX and .resource files Pin
gordingin29-Jan-04 5:52
membergordingin29-Jan-04 5:52 
GeneralRe: .resX and .resource files Pin
Santosh M. P.8-Feb-04 22:55
memberSantosh M. P.8-Feb-04 22:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.170915.1 | Last Updated 18 Apr 2002
Article Copyright 2002 by Alexis Smirnov
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid