You should use a class library to share resources. There are several options for this including embedding files, the easiest is to use the My.Resources feature (project settings, resources tab). The itch about my.resources is it creates a strongly typed proxy class but with
Friend access so it isn't available across assemblies. You can still attach a ResourceManager to read any My.resource from other assemblies, see the ResourceManager property in the generated class for a code sample. With just a little tweak you can generate a strongly typed
Public class for use by other assemblies and it will work just like the My.Resources object. The resources stored by My.Resources is in path "My Project\Resources.resx", run ResGen.exe in that folder with this command:
resgen Resources.resx /publicClass /str:vb,ClassLibrary1,Resources,res.vb
You will get a warning about the naming of output file "Resources.resources" (not specified, and not used), just ignore it. Now "add existing" in class library project to add the generated "res.vb" file. "ClassLibrary1" is the namespace of the class library project, make sure you match the real namespace.
If you have a string resource String1 you would with My.Resources use this code in the local assembly:
Label1.Text = My.Resources.String1
To get access through the newly generated public proxy to the class library you use this code, the consumer of the class library have it referenced, in this example the namespace is "ClassLibrary1":
Label1.Text = ClassLibrary1.ClassLibrary1.Resources.String1