I have a control in an assembly that uses the following assembly attribute:

[assembly: System.Resources.NeutralResourcesLanguage("de", System.Resources.UltimateResourceFallbackLocation.Satellite)]

Using this attribute, all resources (even for the fallback culture) are saved in satellite assemblies. In my example, the resources for the fallback culture are saved in the "de/" sub directory underneath the directory with the control assembly. The control assembly itself does not contain any resources.

If I add the control to the WinForms Designer toolbox and drag it on the designer surface (e.g. a form) I get a MissingSatelliteAssemblyException that says that the component could not be created, because the satellite assembly for the fallback culture "de" could not be found or could not be loaded.

It seems as if the designer does not find the resources DLL in the "de/" sub directory underneath the directory with the control assembly.

I found two ways to fix the problem, but none of them are actually satisfactory:

If I copy the resources DLL (not the control DLL) to a "de/" subdir underneath the directory where the devenv.exe lies (C:\<Program Files>\Microsoft Visual Studio 8\Common7\IDE\de), the designer works fine (I suppose, this works because the devenv.exe dir is the path of the calling assembly (= the WinForms designer) and so the resource resolution works.) - But: Copying developer files into the IDE system dirs is not really acceptable.

If I use the DEVPATH variable mechanism with DEVPATH pointing to the directory where the control assembly lies, the designer works fine. - Since DEVPATH disables all versioning and so makes assembly resolution unpredictable, this solution also is not acceptable.

Putting the control assembly to the GAC might also solve the problem (did not try that), but this is also not acceptable, as my application must stay as GAC free as possible. :)

Has anyone a better solution to make the control usable in the designer?