The [assembly: obfuscation] does not react to the parameter PublicMembers := true.
And in the documentation is stated:
This metadata is stored in the .fx file, so that the binary files (such as .dlls, .jars, or .a files) that will eventually be distributed to your end-users only contain the obfuscated names. When targeting .NET or Java (which does not emit .fx files by default), you will want to enable the Create .fx File option in project settings, to enable this.
@ck:
I copied the .fx file to the bin folder, but with a project reference only the obfuscated members are visible.
I tried to reference the .fx file instead, but that is not accepted by Visual Studio.
@ck: This problem is unrelated.
I have the same problem again; I did now recompile without obfuscation, and the dependent project doesn’t see the namespaces (see my mail to you and Marc).
This one started as soon as I compile the dll with obfuscated public types. The exe did not see the namespaces anymore (as was expected). Copying the fx file to the bin folder did not help. And it does still not see the namespaces after I recompiled the dll without obfuscation.
Removed the reference, compiled (errors of cause), made a project reference again, an now it works again.
Just found another bug: Go to reference does not work when the reference is obfuscated (but mapped by the fx file).
In the output window is logged: Could not find external type