.NET Framework 4.5と下位バージョンの互換性がカオス

.NET Framework 4.5は、1.1/2.0/3.0/3.5/4と下位互換性がありますが、3.5は別途インストールしておく必要があるみたいです。

.NET Framework 4.5と下位バージョンの互換性がカオス

2015.09.02: さらに追記
2015.08.27: このページの根本を覆すような追記
2015.08.04: 冒頭に解決策を挿入
2015.02.04: 追記部分が読みにくかったので、文章構成を変更

2015.08.27追記

情報提供いただきました。
このページで取り上げている「.NET Framework のバージョンの互換性」の英文オリジナルページを読むと、翻訳文で「下位互換」と訳されている部分は原文では「Backward compatibility」と表現されており、これは「下位互換」ではなく「後方互換」ではないか?とツッコミ頂きました。

・・・なるほど、私の混乱はこれで多少は収まりが付きそうです。
また、これらの互換性の解説は「2.0/3.0/3.5」または「4.0/4.5/4.6」間のみで通用する話として読むべきではないか・・・という考え方も生まれました。
つまり、以下 2015.08.04追記分手法をとらなければ、最新の.NET Framework で古い.NET Frameworkアプリを動かせない、という事のようです。

2015.09.02追記

情報いただきました。
Windows TIPS:.NET Frameworkのバージョンを整理する - @IT
上サイトに非常に分かりやすくまとめられていました。

一部引用

.NET Frameworkの各バージョンの関係
.NET Frameworkの各バージョンの関係

水平に並ぶ4つのグループはお互いに独立していて、1つのシステムに複数のバージョンをインストールして同時に利用できる。逆にいえば、上位バージョンをインストールしても下位バージョンをインストールしたことにはならない。Ver.2.0/3.0/3.5は内包関係にあるが、Ver.4/4.5.xは置き換えなので共存できない。原則として、個々の.NET対応アプリケーションが必要とするバージョンの.NET Frameworkをそれぞれインストールすることになる。

上の解説が、私の手元のPCの挙動と一致し、かなりスッキリしました。

コメント欄に頂いた情報
まとめ
1.0のソフト -> 1.0で動く
1.1のソフト -> 1.1で動く
2.0~3.5のソフト -> 3.5で動く
4.0~4.6のソフト -> 4.6で動く
1.1以前に関しては既にサポートが打ち切られている

私は過去、マイクロソフトの解説ページを読んで .NET Framework は過去のバージョンとの互換性があり、基本的に最新バージョンが入っていれば.NET Frameworkアプリは作動するものと思い込んでしまいましたが、どうやらこれは間違った解釈をしてしまったようです。

これで 私の .NET Framework の混乱も、ほぼ解消したように思います。

2015.08.04追記:解決策

古い.NET Frameworkのスマートなインストール方法および、.NET Framework 2.0時代のツールを作動させる方法を別ページで紹介しています。
詳細→ 「Windows 10/8.1 で古い .NET Framework ツールを作動させるTips

Windows 10の.NET Framework 4.6でも同じ手順を実行できます。
Windows2000~XP時代に 古い.NET Frameworkで作成されたツールも、上リンク先の方法でかなりのものが作動します。

サイト内関連リンク

 

以下は古い資料、または読み物としてご覧下さい。


.NET Framework 4.5は、1.1~4.0と互換性があるのかないのか、すげー混乱したのでメモしとく。

Windows 8 / 8.1 には、.NET Framework 4.5が標準でインストールされています。
.NET Framework 4.5は、 Version 1.1、2.0、3.0、3.5、4 でビルドされたアプリケーションと下位互換性があり、古い.NET Frameworkでビルドしたアプリも作動します。いや、すると思っていたのですが、作動しないです。

Microsoftの解説ページ

.NET Framework のバージョンの互換性

引用文

下位互換性と .NET Framework 4.5
.NET Framework 4.5 は、.NET Framework の Version 1.1、2.0、3.0、3.5、および 4 でビルドされたアプリケーションと下位互換性があります。 つまり、旧バージョンの .NET Framework でビルドしたアプリケーションとコンポーネントは、.NET Framework 4.5 で動作します。(後略)

ホントは(後略)とした部分に大切なことが書いてあるのだけど、その辺を読んでいない場合は、「4.5 は1.1/2.0/3.0/3.5/4.0でビルドされたアプリも動く。」つまり「Windows8には古い.NET Frameworkをインストールしなくても良い」と思い込んでしまう。

って言うか、まずはじめに『あれ?[下位互換]って言葉を使う場合は、4.5でビルドしたアプリは(1.1~4.0形式で出力すれば)1.1~4.0でも作動できますって意味になるんじゃないの?』と感じてしまったが、引用文の後半「つまり、旧バージョンの .NET Framework でビルドしたアプリケーションとコンポーネントは、.NET Framework 4.5 で動作します。」の部分で.NET Framework 4.5は1.1~4.0すべてのアプリが作動すると思ってしまった。

この言葉を信じて、Windows8に「.NET Framework 2.0~3.5が必要なアプリ」をインストールしてみると・・・
ああ
▲「.NET Framework 2.0以上が必要です」のメッセージと共にインストーラーが止まってしまった。.NET Framework 4.5がインストールされた環境なのに。何故だ。

 

Windows 8 への .NET Framework 3.5 のインストール

引用文

.NET Framework 4.5 は Windows 8 に含まれており、オペレーティング システムと共にコンピューターにインストールされます。  ただし、.NET Framework 3.5 は Windows 8 と共に自動的にインストールされません。 Windows 8 で .NET Framework 3.5 を必要とするアプリケーションを実行するには、コンピューターでバージョン 3.5 を有効にする必要があります。 
旧Verでビルドしたアプリが4.5で動作する筈なのに、なぜ3.5をインストールする解説が必要なのだ?
やっぱ3.5は別途インストールしないとダメなのか・・・・?

・・・・試してみたら、Windows8に.NET Framework 3.5 インストールできた。
んでもって.NET Framework 2.0アプリも無事作動できた・・・。
やっぱ3.5は別途インストールしないとダメなのか・・・orz

 

という事で、もう一回、最初の引用文を最後の方までしっかり読んでみた。

引用文

下位互換性と .NET Framework 4.5
.NET Framework 4.5 は、.NET Framework の Version 1.1、2.0、3.0、3.5、および 4 でビルドされたアプリケーションと下位互換性があります。つまり、旧バージョンの .NET Framework でビルドしたアプリケーションとコンポーネントは、.NET Framework 4.5 で動作します。 ただし、既定では、アプリケーションは、開発された共通言語ランタイムのバージョンで動作するため、アプリケーションを .NET Framework 4.5 で実行するには構成ファイルを提供する必要がある場合があります。詳細については、この記事の前の「アプリケーションのバージョンの互換性」を参照してください。 

最初の引用時に(後略)とした部分に何か大事な事が書いてあった。
私が全文読まずに早合点していただけのような気もするが、なんか納得できない文章だ。

「互換性はあるけど、旧バージョンのみで動作する場合もあるから、その構成ファイルも必要だよ」「つまり.NET Framework 3.5以下のインストールは必要だよ」って事なのですね。
これ、互換性があるって言えるのか・・・?

 

(今回の問題はココじゃないんだけど) 何か納得できなくて「下位互換、上位互換」などについて改めて調べてみた。
下位互換、上位互換、前方互換、後方互換がわからない - ぱせらんメモ
Wikipedia 下位互換 上位互換 前方互換 後方互換
やっぱ「下位互換」だと「.NET Framework 4.5でビルドしたアプリは1.1~3.5でも動かせますよ」って意味で、「旧バージョンの.NET Framework でビルドしたアプリケーションとコンポーネントは、.NET Framework 4.5 で動作します」って意味にはならないよねえ?

各OSに.NET Framework をインストールする場合

  • .NET Framework 1.1と2.0~3.5と4.0~4.5に互換性はない。
    • .NET Framework 4.5は1.1~4.0の下位互換がある。
      4.5のアプリに互換性はあるが、旧バージョンで開発されたコンポーネントが旧バージョンのランタイムを指定する場合があるので、その場合は旧バージョンが必要になる。
  • Windows XP
    .NET Framework は入っていない。
    1.1/3.5/4.0をインストール。
    .NET Framework 4.5はインストール出来ない。
  • Windows Vista
    .NET Framework 1.1が既に入っている。
    .NET Framework 3.5と4.5をインストールする
  • Windows 7
    .NET Framework 3.5は既に入っている。
    .NET Framework 4.5をインストールする
    (4.5をインストールする際、4.0は自動削除される)
    .NET Framework 1.1はインストールできない
  • Windows 8
    .NET Framework 4.5が入っている。
    .NET Framework 3.5をインストールする
    .NET Framework 1.1はインストールできない

Windows7に .NET Framework 4.5をインストールすると、4.0は自動的にアンインストールされる見たい。なので4.5は完全に4.0の下位互換となる様です。
4.5 は 1.1/2.0/3.0/3.5に対し基本的に下位互換があるけれど、動かない場合もあるので、やっぱ.NET Framework 1.1と3.5をインストールする必要はあるみたい。(Windows 7/8に1.1は不要)

何故こんなややこしい事に・・・?

普通に考えて、XP/Vista/7/8 の互換性を保つためにこういうコトになっているんだろう。

 

サイト内過去ページ
.NET Framework をインストール出来ない・削除出来ない場合の解決方法
上記を修正したいのだけど、ちょっと頭が混乱してしまい、直すに直せない状況です。。。

あとがき

現在、このサイト内のHandbrakeのページを更新準備中。
その過程で、古いHandbrakeをWindows8にインストールしたり、最新のHandbrakeをXPにインストールしたりしたら、インストール中になんか納得行かない挙動が確認できたので、Microsoftのサイト内を読み返したら上記の2ページを発見した。

Microsoftの表現にイマイチ納得できない自分がいる。



次のページへ
前のページへ
.NET Framework 4.5と下位バージョンの互換性がカオス
TOPページへ

コメント(多忙中のため休止中) C[14] T[0]

人気ブログランキング
このブログを応援する・このブログに寄付する
mona:MEmMcKYAWfdX1r3XkoWBoweJTSjtDgdqRo
btc :1342ndtQDJ3NKkTw1BfP8AD4xMy8NJ4kWb


広告&サイト内おすすめページ

 

関連記事(ぜんぶ見る>> Tipsや便利ツール(8/8.1) | Tipsや便利ツール | Windows Tips
.NET Framework 4.5と下位バージョンの互換性がカオス
Windows 10/8.1 で古い .NET Framework ツールを作動させるTips
「古い.NET Frameworkアプリ」を「configファイルを弄って」無理やり作動させる方法
秀丸でテキスト内の全角・2バイト文字を検索する

※コメント欄の一時休止中につき、Monacoin企画も休止中です。
簡単!4ステップでふるさと納税 a8
次のページへ
前のページへ

更新日 2015/09/02(2013年08月公開)このページはリンクフリーです

カテゴリ(メニュー)
このページ

Amazon

Amazon 日替わりタイムセール
サイト内検索
Special Thanks (TOP15)

Amazon
リンク集
楽天市場/ブログランキング
a8 a8