When I build my solution (console app) it creates a dll rather than an executable. Am I doing something wrong or just misunderstanding how this works?
Right-click on your project in Solution Explorer and select Properties in the bottom of Context Menu. Select proper Output type then as marked on the screendhot.

As mentioned in another answer here: in case your Target framework is .NET Core, use Publish in the Build menu of Visual Studio width setting Target runtime format, for example win-x86 to make a proper output application format.
Check out the reference: Publish your .NET Core application with Visual Studio
If this is .Net Framework then more than likely the project output type is set to Class Library in the project properties page.
To fix this you must ensure that you have a method with a signature of static void Main() and set the Output type to Console Application.
To Change the Output Type:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With