You can reduce the amount of information in the assembly. If typed datasets are not always used, moving the various to separate assemblies referenced by one central assembly can be an effective approach. Then, the runtime will load assemblies only as needed.
Otherwise, you can do a little without actually reducing the amount of code in the assembly itself. The obfuscator may reduce the size a bit, as it will reduce the names, but this is likely to be a minor improvement.
source
share