I've started making my default library type a console application. The immediate benefit is that I can easily implement integration tests within the main application.
Is there a down side to not having my libraries as standard DLLs? Everything seems to be working fine thus far.
I'll always have access to the source of these libraries, and I'll always be referencing them as projects, not as binaries, if that makes a difference.
Edit:
What I'm primarily curious about is if there are differences in the capabilities of a DLL vs an EXE. I'm not terribly worried about shipping out a few kilobytes of extra data.
Additional Edit:
In terms of capabilities, it turns out Razor can't reference another project which is not set to build as a library, so there is at least one reason beyond organization to not do this.
The immediate benefit is that I can easily implement integration tests within the main application.
Why would you want to do that? I don't see that as a benefit at all. Why would you want to deploy your tests when you deploy your production code? And why would having tests in your binary make it a console app anyway, unless you're writing your own ad-hoc tests?
I would strongly recommend just using a plain class library - and have a separate plain class library for tests, using one of the many standard test libraries - NUnit, xUnit etc. Your current approach sounds like it's more likely to cause confusion than anything good.
See more on this question at Stackoverflow