How can I read embedded .resx in different assembly

4.7k views Asked by At

I have some dlls in my project that only contain many .resx files as embedded resources. In each project the .resx files are put into different folders. The property "Custom Tool Name Space" of all is set to the namespace of each project. When I try to use ResourceManager to get a string I get an error that for example "MyTemplate.resources" is not found but I only have "MyTemplate.resx" in the dll.

How can I access my resources?

new ResourceManager(typeof(MyTemplate.resx)).GetString("FirstNameTooltip");

As I said in comment below the Resources are dynamicly changed. and i have no direct access to its properties.

2

There are 2 answers

1
Stefan Steinegger On

You need to load the assembly first:

Assembly ressourceAssembly = Assembly.Load("ResourceAssembly");

(There are a couple of issues you could have with this. Read about dynamic assembly loading specificly.)

Then create the resource manager:

ResourceManager myManager = new 
   ResourceManager("<default namespace>.<Resx-Folder>.<Resx-File>", ressourceAssembly);

Then load the string:

myManager.GetString("FirstNameTooltip");
7
clement On

Here's how I usually do:

string mystring = YourResourceNamespace.MyTemplate.FirstNameTooltip;

If you don't know the napespace, click on the .resx and double click on the Designer.cs, then check the namespace, all the keywords are defined as simple static variable with gettor, so just call those ones.

If ressource is in one other project, then simply incude it onto your project in order to access them from your project.

I hope this helps