In the company I work for, we use ILMerge to isolate DLL bundles in an application (bundles are developed by different teams).
What we want to share between bundles (aka contract, or API) is what is NOT merged, all other dependencies are merged into each bundle, bringing a feeling of "what you test is what is run".
ILMerge is fine, except it's closed-source, and has many issues:
- relies on COM component
- errors range from OutOfMemory to StackOverflow, all in COM parts, hard to debug
- no control over dependency resolving (only a list of search directories)
- [insert yours here]
I'm not good about commitments, and I didn't feel good with this one either, so I checked the alternatives:
- mono-merge: no longer supported, bugged, uses out-dated Cecil version
- ***fuscator pro: refusing to go commercial on this, the spec is open, so should be the tools
So I took a night shift to do this, and here it is: ILRepack
Based on renown Mono.Cecil (git trunk), it merges assemblies, and it's open source, so:
- if you don't like it, change it !
- if it doesn't work, fix it !