In main library there is a namespace Main.TargetNamespace. In merged library there is a public type Merged.SourceNamespace.Type.
I need to move the type Merged.SourceNamespace.Type to Main.TargetNamespace as public.
I did
[assembly: Obfuscation(Feature = "ilmerge custom parameters: /internalize:exclude.file", Exclude = false)]
[assembly: Obfuscation(Feature = "Apply to type Merged.SourceNamespace.Type: type renaming pattern Main.TargetNamespace.Type", Exclude = false)]
But only internalization is disabled (i.e. the first line works): the type Merged.SourceNamespace.Type is public and available in obfuscated assembly.
How can I keep type Merged.SourceNamespace.Type from merged library public and move it to a specified namespace Main.TargetNamespace.Type?
In order to keep
Merged.SourceNamespace.Typepublic, it should be excluded from internalization:The corresponding obfuscation settings of
Mainassembly should look like this:P.S. A general piece of advice. While the given recipe allows to achieve the goal, I would strongly suggest to avoid using it in production scenarios. Here is why: the public API of an assembly should be exclusively defined by the source code. Do not rely on a tool such as Eazfuscator.NET to do the API transform for you. Otherwise things quickly become hairy. For example, your colleague or future you may have hard times trying to figure out what's going on with that API and why on earth it depends on obfuscation.