実際に確認してないけど
ヘルプの.NET Framework 4 の新機能ってページ
>旧バージョンの .NET Framework でビルドされたアプリケーションを実行するために、
>.NET Framework 4 の共通言語ランタイム バージョンが自動的に使用されることはありません。
>.NET Framework 4 で旧バージョンのアプリケーションを実行するには、
>Visual Studio のプロジェクトのプロパティに指定されたターゲット バージョンの .NET Framework を使用して、
>アプリケーションをコンパイルする必要があります。
>または、アプリケーション構成ファイルの <supportedRuntime> 要素を使用して、サポートするランタイムを指定できます。

さらに<supportedRuntime>のページ
>.NET Framework Version 1.1 または .NET Framework Version 2.0 で作成されたアプリケーションまたはコンポーネントを
>.NET Framework Version 4 で実行するには、サポートされるランタイムのリストで .NET Framework 4 を指定するだけでは不十分です。
>さらに、構成ファイル内の <startup> 要素で、 useLegacyV2RuntimeActivationPolicy 属性を true に設定する必要があります。
>設定しない場合、サポートされるランタイムのリストで、.NET Framework 4 よりも低いバージョンの
>.NET Framework のうち最上位バージョンが検索されます。
>.NET Framework 4 がリストにある唯一のランタイムである場合、読み込みは失敗します。

最低でも*.configを設定してやらないといけないんじゃないの?