The result or product of your application depends on how the solution is built. A solution in Visual Studio can contain one or more projects and each project generates a compiled assembly that can be (primarily) an EXE file or a DLL.
For example, if the entire access layer to your database is generated in a separate assembly or project, this project will compile a DLL library that can be linked from your main project (which could be a user interface with windows) for data manipulation) and use the public services of the same library.
In addition to the above, projects usually integrate references (for example, database access libraries, collections of controls, property classes or helpers , etc. ) and that will also be included (if configured) in the final output of the project.
The decision to design the solution is made by the programmer: the development environment (Visual Studio) presents certain conventions to be followed by the platform or framework .NET, but the application builds it as wish Obviously you can use arquitectonicos patrones to facilitate the construction of your solution, but that is also Your decision.