In Visual Studio 2008 project properties, Application tab, I can set the Output type to Windows Application, Console Application, or Class Library. I have a project that I w
You could build the dll by default, and make another dependant target that is simply a wrapper console app that uses the dll.
I think the simplest solution is to build as a EXE and then have a post build action which copies the EXE into a DLL. There is no real difference between the two in .Net.
You cannot compile to both an exe and a dll. Whether an assembly is treated as an exe or a dll is determined by a single bit flag in the portable executable header of the file (see http://msdn.microsoft.com/en-us/magazine/cc301805.aspx for more info). This flag cannot have both values.
What you can do to satisfy your need is to add a reference to your exe. You cannot do this in some versions of Visual Studio (2005 and below) as the UI will not let you, but you can hand edit the project file to add the reference. Later versions of Visual Studio do allow you to add references to exe files using the UI.
Create two separate projects, one for your Console app and one for the Class library. Set the appropriate Output type for each.
Don't forget to add a reference to your Class library to your Console app project though.
If I'm not mistaken, you can use the EXE as a class library.
Just add a reference to it, in the other projects. A .NET EXE is just an assembly.