I added three images to a file called Resource1.resx. I also added one string just for test purposes. I\'m getting this error on either the GetString or the GetObject(image
I also had the same problem. adding "DefaultNameSpace." ("BusinessLogic" is the default namespace in my case) before resourcefileName in following line resolved my problem
public static ResourceManager rm = new ResourceManager(string.Concat("BusinessLogic." , Constants.Common.ResourceFileName), Assembly.GetExecutingAssembly());
I had the same problem today on a VS-designer-built winform. I had added an image to an item of a menuStrip:
this->menuitemFileSettings->Image = (cli::safe_cast<System::Drawing::Image^>
(resources->GetObject(L"menuitemFileSettings.Image")));
Since then the same error came up. Testing with images on other controls was the same.
Somehow I finally stumbled over the "Managed Resources" entry in the project settings. The setting "resource file name" has the (default) value $(IntDir)\$(RootNamespace).$(InputName).resources
... which is correct, but when I realized that the path contains the name of the namespace, I checked the namespace and found, that I had changed it (from NS_Winform to NS_assemblies) for easier import of the assemblies.
Changed it back, working fine now. :-)
But I still don't understand, how the resources content
1) was included into the exe despite the wrong namespace, and
2) not found then although included.
Have you remembered to include the default namespace/folder when you reference the resource?
ResourceManager rm = new ResourceManager("DefaultNamespace.Folder.ResourceName");
If you are unsure of the correct name, load the assembly in Reflector and browse down to see what it is.
The 1st argument is wrong. But, there is already a ResourceManager created for you. You can see its code: in the Solution Explorer window open the Properties node, open the Resources.resx node and double-click the Resources.Designer.cs file.
You'll get its instance with Properties.Resources.ResourceManager
. If you added the bitmaps with Project + Properties, Resources tab (strongly recommended), you can just refer to the property by the name you gave it. Like Properties.Resources.circleGreen
. Do beware that you get a new image object each time you use the property, you may need to copy it to a variable if you use it more than once.