After investigating the issue for a while, I've settled for a workaround: do inheritance not on the resource files themselves, but on the classes that need to access the "parent" resources.
You only need to have a base class whose project includes a "master" resource file, and set that resource file's CustomTool property to PublicResXFileCodeGenerator (the "Public" part is important as it will create a public
class, as opposed to an internal
one). One restriction is that PublicResXFileCodeGenerator is only available starting with VS2008 (this CodeProject article could otherwise be helpful).
Then, in classes which need to access the "master" resources, simply inherit from the base class and access the resources like this:
public class ChildClass : BaseClass
{
string test = BaseClass.BaseResourceFile.TestString; // a common resource
string localResource = ResourceFile.OtherString; // a local resource
}
One disadvantage with this solution is that you have to explicitly reference the BaseResourceFile to access resources defined there; there's no fallback to the parent class like there would be if inheritance was done directly between the Resource classes.
And for posterity, I'll answer my own questions:
When does ResXFileCodeGenerator generate/regenerate the designer
class?
Whenever a resource is added/removed/modified.
Is there a way to turn off that auto-generation?
No. And anyway, a "code generator" tool without auto-generation would be pretty useless, don't you think?
Will we have to forego the advantages of ResXFileCodeGenerator and implement our
own handling of ResourceManager?
No, see above answer.
We also considered implementing a solution using "linked" files (from the "Add existing item" dialog, using the "Add as link" option) where one parent resource file would be linked to all our assemblies, but since our assemblies already inherit from a base class, it seemed much better to go the inheritance way.
I don't really feel comfortable accepting my own answer, so if anyone comes up with a better solution or improvements on my solution, I'd gladly accept that. That is, if anyone cares at all.