シェル拡張コンポーネントをマネージコードで作るな!? の続きと言うか訂正と言うか。
コメント欄でツッコミを頂いたのだが、コメント返しで対応するにはちょっと大きすぎる問題なので新たにポスト。
考えてみると、俺が2.0対応のコンポーネントを作って公開したとしても、それがインストールされるマシンにCLR1.1と2.0が両方インストールされていて、1.1を使うシェル拡張がインストールされていたら問題は起きる。
じゃあ、インストーラで「CLR1.1がインストールされてちゃダメ」って指定(できるのか知らんが)したらどうだと思ったけれど、俺のコンポーネントをインストールした後で、CLR1.1と1.1用コンポーネントをインストールされることまでは避けられない。
俺の2.0用コンポーネントがロードされる前にアンマネージドスタブのようなものをロードさせて、そいつにexplorerがホストしているCLRのバージョンを調べさせるとかすれば避けられるだろうか。すげぇ面倒臭そうで嫌だけど。
NyaRuRuさんのサイトでは、さらにIEやDirect3Dも巻き込んだ問題として解説されており、興味深い。
正直、こんなこと今まで考えたこと無かった。こんな問題があるのにサイドバイサイドなんてどの面下げて吹聴してやがるんだか。
NyaRuRuさんのサイトはInternalなところまで突っ込んでいる記事が多く、たまに検索に引っかかるとつい読みふけってしまう。仕事が進まないじゃないかコラ(ゴメンナサイ
ところで、異なるバージョンのDirect3Dって同じマシン内で共存できたんだっけ?