Can not read resource from dynamicaly generated resource dll

R

Roman Muntyanu

Hi all,

I created resource dll dynamicaly using this code

AppDomain curDom = AppDomain.CurrentDomain;
AssemblyName myAssemblyName = new AssemblyName();
imagesAssemblyName.Name = "Images";
AssemblyBuilder myAssemblyBuilder =
curDom.DefineDynamicAssembly(myAssemblyName,
AssemblyBuilderAccess.Save);
ModuleBuilder myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("Images.dll",
"Images.dll",true);
IResourceWriter rsxw = myModuleBuilder.DefineResource("Images",
"Description");
Image image = Image.FromFile("myImage.gif");
rsxw.AddResource("pic",image);
myAssemblyBuilder .Save("Images.dll");

Then tried to get that image from another application.
ResourceManager res = new ResourceManager("Images",
Assembly.LoadFile(Directory.GetCurrentDirectory() + "\\" +
"Images.dll"));
Image image = (Bitmap)(res.GetObject("pic"));

But got exception
"Could not find any resources appropriate for the specified culture
(or the neutral culture) in the given assembly. Make sure
"Images.resources" was correctly embedded or linked into assembly
"Images"

In ILDASM can see that i have correct resource name
..mresource public Images
{
}
but still can not get resource

I would greatly appreciated any tips on what is going on in there.

Thank you

Roman
 
G

Guest

The problem is that the ResourceManager can only read resources which are in
the binary .resources format, and you need to include ".resources" in name
parameter in DefineResource. So you need to change the call like this:
instead of:
IResourceWriter rsxw = myModuleBuilder.DefineResource("Images","Description");
use:
IResourceWriter rsxw = myModuleBuilder.DefineResource("Images.resources",
"description");
Hope this solution works for you. Marin
 
Top