¿Es posible compilar condicionalmente a la versión de .NET Framework?

Puedo recordar que cuando trabaje con MFC, podría admitir varias versiones del marco MFC al verificar_MFC_VER macro.

Ahora estoy haciendo algunas cosas con .NET 4 y me gustaría usar Tuple en un par de lugares, pero igual mantengo todo lo demás compatible con 3.5.

Estoy buscando hacer algo como:

#if DOTNET4
    public Tuple<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#else
    public KeyValuePair<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#endif

Respuestas a la pregunta(4)

Su respuesta a la pregunta