UPX does a fantastic job at compressing executables. However, it does not support .NET.

MPRESS does.

MPRESS makes programs and libraries smaller, and decrease start time when the application loaded from a slow removable media or from the network. It uses in-place decompression technique, which allows to decompress the executable without memory overhead or other drawbacks; it also protects programs against reverse engineering by non-professional hackers. Programs compressed with MPRESS run exactly as before, with no runtime performance penalties.
MPRESS is absolutely free of charge software.

I’ve been using this for awhile now, and have to say its great. Many of my .NET apps are cut down by 50% or more.

Check it out!