Include Dependencies Enterprise
Most .NET applications consist of multiple assemblies. By default, Demeanor obfuscates only the root assembly you specify. With --include-deps, Demeanor discovers and obfuscates all co-located private dependencies — the transitive closure of assemblies in your output directory. Cross-assembly references (TypeRefs, MemberRefs, ExportedTypes) are automatically updated to reflect renamed symbols.
Usage
| CLI | MSBuild | Default |
|---|---|---|
--include-deps | <ObfuscateIncludeDeps>true</ObfuscateIncludeDeps> | Off |
--xa <assembly> | <ObfuscateExclude> (assembly names) | Exclude specific assemblies |
How It Works
Demeanor walks the AssemblyRef table of the root assembly, locating each referenced DLL in the same directory. It loads them into an AssemblySet where all rename operations automatically propagate across assembly boundaries. When TypeDef MyLib.Calculator is renamed to a, every TypeRef in every other loaded assembly that references it is updated.
What Gets Included
- Private assemblies — DLLs in the same directory as the root assembly.
- Transitive dependencies — dependencies of dependencies.
- NOT included: system assemblies (
System.*,Microsoft.*), NuGet runtime assemblies, and assemblies outside the application directory.
Excluding Specific Assemblies
demeanor --include-deps --xa ThirdParty.SDK MyApp.exe Use --xa (repeatable) to exclude specific assemblies from obfuscation. The assembly is still loaded for reference resolution but its symbols are frozen.
When to Use
- Multi-project applications — your app has
MyApp.exe+MyApp.Core.dll+MyApp.Data.dll. All should be obfuscated together. - Self-contained deployments — everything ships together, no external consumers.
Ready to protect your .NET code?