First of all:
What if you decide to put your awesome Text User Interface framework in a library so that other console applications may use them?
Explication of why it compiles, what should be so that it wouldn't, and how it would solve both problems:
The Console class is in one of the two "core" assemblys: mscorlib.dll and system.dll. That's why building a DLL doesn't reject the Console reference (there isn't an attribute "ExesOnlyAttribute" either).
The Console class should be in a separate assembly that a DLL doesn't reference by default. It would solve both problems because if you make a DLL that actually has to do with the console, you can explicitly reference that assembly.