It is possible to reverse engineer a dll and an exe. It gets more tricky if the developer obscured his code, but there are always ways around these things. That is why there is so much cracked games out on the market. Somebody reverse engineered them into assembly and patched it.
So if you want to safe guard you code from being decompiled, you will need to take some extra steps so it is not just as simple and 1 application. But most do not for web applications, as the dll is on a server which has it's own security and not distributed.