I\'ve moved all image resources in a large multi-project solution to a new project specifically created for shared resources.
Adding a new reference to other project
I was able to share a resx file between project and using it in the designer in VS 2008 SP1 (dunno other versions). Differently from other approaches, here resources are statically and dynamically shared, so at runtime there's really one copy of the shared resources. No storage or memory waste and it's easy to maintain with tons of projects.
Follow the guide and tell me if it works for you:
The project in the Solution Explorer should look like this:
Now in any project you need the resx file to be shared do this:
Edit manually the project file (*.csproj) and add the following lines in the resources file ItemGroup (create a local resource file if you want to see it):
...
GlobalResources.resx
ResXFileCodeGenerator
GlobalResources.Designer.cs
Resources
...
Obviously, the "Include" attribute should be the correct relative path to GlobalResources.resx.
In my project, the following lines are generated and added to the project automatically when I do this:
GlobalResources.Designer.cs
True
True
GlobalResources.resx
If they aren't added, add them manually.
Now the project should look like this in the Solution Explorer (likend files should be marked differently):
Last two steps:
And you are done: at this point you should really be able to use the resources you added in the shared resx in the designer selecting "GlobalResources.resx" in the "Project Resource file" dialog of your question. And as told it's really shared even at runtime! In the Properties panel you should see the full Namespace and class of the external project. If you remove the dependency on the "Resource" project it doesn't even compile. If it doesn't work for you, insist until it works and in case tell me where the guide is wrong. It have to work! Let me know.