See the question and my original answer on StackOverflow

You can achieve this if you edit the .csproj manually:

  • Right click on the project node in Solution Explorer
  • Select "Unload Project"
  • Right click on the project node in Solution Explorer
  • Select "Edit MyApp.csproj"

Move the <OutputType ../> property group Xml element from the <PropertyGroup .../> Xml element without Condition to the property group with conditions corresponding to build configuration / platform.

Before:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    ...
    <OutputType>Exe</OutputType>
    ...
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    ...
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
  </PropertyGroup>

After:

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    ...
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    ...
    <OutputType>Exe</OutputType>
    ...
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <OutputType>WinExe</OutputType>
    ...
  </PropertyGroup>

And finish:

  • Right click on the project node in Solution Explorer
  • Select "Reload Project"

Here is a proof example:

class Program
{
    public static void Main(string[] args)
    {
#if DEBUG
        Console.WriteLine("test");
#else
        Application.Run(new Form1());
#endif
    }
}

It works, but I don't think this is officially supported, so use at your own risk :-)