Agencies and consultancies

You hand over a build, not your source — obfuscation keeps that boundary meaningful.

The situation

When a contract covers a compiled deliverable rather than source code, an unobfuscated .NET build hands over the source in practice. The client can decompile it, and so can whoever they hire next.

That may be perfectly acceptable — or it may undercut a support retainer, or expose reusable internal libraries you carry between clients.

What you are exposed to

  • A client taking your build to another supplier who reads your implementation to take over.
  • Your reusable internal framework being extracted from a client deliverable.
  • Estimates and rates being questioned once the implementation is visible.

What obfuscation does here

  • Compiled deliverables stop being a source handover by accident.
  • Any shared internal library you bundle has its implementation renamed while its public API keeps working.
  • Batch mode on Pro protects an entire deliverable in one step at handover.

What it does not do

Worth being clear about the limits before you rely on this.
  • Check the contract. Some agreements require deliverable source or forbid obfuscation — this is a commercial question before it is a technical one.
  • Tell the client what you are doing. Discovering obfuscation unannounced damages trust more than the protection is worth.
  • You will need the unobfuscated build to support the deliverable later — archive it per client and release.

Suggested setup

Plan Pro if you hand over multiple assemblies or work above 1 MB, which is most projects.
Public names On for applications; it is ignored for any library the client compiles against.
Workflow Make it a handover step with the archive of the original build, so support remains possible.

Test this before you ship

Obfuscation only breaks things that resolve a name at runtime, so a short checklist catches nearly everything:

  • The delivered build runs in the client's target environment.
  • Any integration the client depends on still functions.
  • The unobfuscated build and symbols are archived and findable.
  • Handover documentation states that the deliverable is obfuscated.

If something does break, obfuscation and reflection lists each cause with its fix.

Try it on your own build

Upload a DLL or EXE and compare the two in a decompiler. It takes about a minute.