Today I had to display ILMerge's help information (btw, ILMerge does merge assemblies in a single assembly and it is a must have free utility produced by [MS] Research labs). This is the output I've got:
C:\Progs\Vodovodi\Vodovodi.Utilities\AddPrefix\bin\Release>"C:\Program Files\Mic rosoft\ILMerge\ILMerge.exe" Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysig n]] [/internalize[:filename]] [/t[arget]:(library|exe|winexe)] [/closed] [/ndebu g] [/ver:version] [/copyattrs [/allowMultiple]] [/xmldocs] [/attr:filename] [/ta rgetplatform:<version>[,<platformdir>] | /v1 | /v1.1 | /v2] [/useFullPublicKeyFo rReferences] [/wildcards] [/zeroPeKind] [/allowDup:type]* /out:filename <primary assembly> [<other assemblies>...]
Clear, isn't it? Absolutely not - it is an unreadable mess. It is very obvious that this fine tool was written by scientists who don't care about friendly messages. They should use at least new lines!
C:\Progs\Vodovodi\Vodovodi.Utilities\AddPrefix\bin\Release>"C:\Program Files\Mic rosoft\ILMerge\ILMerge.exe" Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysign]] [/internalize[:filename]] [/t[arget]:(library|exe|winexe)] [/closed] [/ndebug] [/ver:version] [/copyattrs [/allowMultiple]] [/xmldocs] [/attr:filename] [/targetplatform:<version>[,<platformdir>] | /v1 | /v1.1 | /v2] [/useFullPublicKeyForReferences] [/wildcards] [/zeroPeKind] [/allowDup:type]* /out:filename <primary assembly> [<other assemblies>...]
So, a simple \r\n does make a huge difference. And there are plenty of fine tools/applications with a great engine and with crappy UI out there. I won't even mention Dotfuscator at this point.