Simple but powerful
An obfuscation tool designed for most .NET developers.
Hide everything private, while keep everything public. You can achieve such simply via default settings.
Hide class/method/property/event names that you don't want to expose. This is irreversible.
String contents can be compressed so that end users won't easily learn them. However, this is reversible by certain tools.
Most of what you desire
Windows, macOS, and Linux